CP949 ์ Encode, Decode ํด ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. (CP949 ๋ EUC-KR ์ ์์์งํฉ์ด๊ธฐ ๋๋ฌธ์, EUC-KR ๋ ๋ค๋ฃฐ ์ ์์ต๋๋ค.)
dependencies:
cp949: ^1.2.1Dart ๋ non-unicode ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ์ native ํ๊ฒ ์ง์ํ์ง ์์ต๋๋ค. ๊ธ์ ์ฐ๋ ์์ ์ผ๋ก CP949 ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด ํ๋ก์ ํธ๊ฐ ์ ์ผํด ๋ณด์ ๋๋ค.
CP949 (EUC-KR) byte ๋ฐฐ์ด์ (List<int>) ๋ฐ์ dart ์ native String ์ ๋ฆฌํดํฉ๋๋ค.
import 'package:cp949/cp949.dart' as cp949;
const cp949CodeUnitBytes = [0xBE, 0xC6, 0xB8, 0xA7, 0xB4, 0xD9, 0xbf, 0xee];
final decoded = cp949.decode(cp949CodeUnitBytes)); // '์๋ฆ๋ค์ด'
const brokenString = 'รรร
รรรท';
final decoded = cp949.decode(brokenString.codeUnits); // '์ปจํ
์ธ 'CP949 (EUC-KR) byte ๋ฐฐ์ด์ ์ ๋์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์๋ชป ํด์ํ์ฌ ๊นจ์ ธ ๋ณด์ด๋ String ์ ๋ฐ์ ๋ณํํด ์ ๋๋ก ๋ฆฌํดํฉ๋๋ค.
(dart ์์ ๊นจ์ ธ ๋ณด์ด๋ ๊ฒ ๋ฟ์ด์ง, ์ค ๋ฐ์ดํฐ ์ ์ค์ ์์ต๋๋ค.)
import 'package:cp949/cp949.dart' as cp949;
const brokenString = 'รรร
รรรท';
final decoded = cp949.decodeString(brokenString); // '์ปจํ
์ธ 'dart ์ native String ์ ๋ฐ์ CP949 (EUC-KR) byte ๋ฐฐ์ด๋ก (List<int>) ๋ฆฌํดํฉ๋๋ค.
import 'package:cp949/cp949.dart' as cp949;
final encoded = cp949.encode('์๋ฆ๋ค์ด'); // [0xBE, 0xC6, 0xB8, 0xA7, 0xB4, 0xD9, 0xBF, 0xEE]
final encoded = String.fromCharCodes(cp949.encode('์ปจํ
์ธ ')); // 'รรร
รรรท' (์ ๋๋ก ๋ ๊ฒฐ๊ณผ์
๋๋ค!)CP949 (EUC-KR) byte ๋ฐฐ์ด์ ์ ๋์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์๋ชป ํด์ํ์ฌ ๊นจ์ ธ ๋ณด์ด๋ String ์ ๋ฆฌํดํฉ๋๋ค.
(dart ์์๋ง ๊นจ์ ธ๋ณด์ด๋ ๊ฒ์ด์ง, ์ ๋๋ก ์ธ์ฝ๋ฉ ๋ ๊ฒ์ด๋ฏ๋ก, CP949 (EUC-KR) ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณด๋ผ ์ (REST API ๋ฑ) ํธํ๋ฉ๋๋ค.)
import 'package:cp949/cp949.dart' as cp949;
final encoded = cp949.encodeToString('์ปจํ
์ธ '); // 'รรร
รรรท' (์ ๋๋ก ๋ ๊ฒฐ๊ณผ์
๋๋ค!)EUC-KR ๋ก ์ธ์ฝ๋ฉ๋ http ์๋ต์ ๋ฐ์์ค๋ ์์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import 'package:http/http.dart' as http;
import 'package:cp949/cp949.dart' as cp949;
const url = 'https://euc-kr-encoded-website.co.kr';
final response = await http.get(url);
print(cp949.decode(response.bodyBytes));
// ๋๋ print(cp949.decode(response.body.codeUnits));
// ๋๋ print(cp949.decodeString(response.body));EUC-KR ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ REST API ๋ฅผ ์ฌ์ฉํ๋ ์์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import 'package:http/http.dart' as http;
import 'package:cp949/cp949.dart' as cp949;
const url = 'https://euc-kr-accepting-api.co.kr';
await http.post(url,
body: {'title': cp949.encodeToString('์ปจํ
์ธ '), 'foo': 'bar'});์ด project ๋ ๋งํฌ๋ค์ด ๋ฆฐํธ, ์ปค๋ฐ ๋ฉ์ธ์ง ๋ฆฐํธ ๋ฑ ๊ฐ๋ฐํ๊ฒฝ ์ค์ ์ ์ํด yarn๊ณผ nodejs package ๋ค์ ์ฌ์ฉํฉ๋๋ค.
yarn install
yarn test
yarn format:md .
yarn format .MIT License. Copyright ยฉ 2020, GIL B. Chan <[email protected]>