2012-01-12 2 views
0

JavaScriptCore를 사용하여 터미널에서 일부 문자열 조작을 시도하지만 일부 문자 인코딩 문제를 해결할 수 없습니다. 나는이 터미널에서 실행하는 경우JavaScriptCore borked strings - 문자 인코딩 문제

:

/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc -e "print('héllo world')" 

그것은 분명 héllo world를 인쇄해야하지만 대신이 héllo world를 인쇄합니다. jsc 대화식 모드에서 print 문을 실행하면 같은 결과가 발생합니다.

나는 횡설수설 텍스트가 잘못된 문자 인코딩 변환 문제임을 알고 있습니다. 문제는 jsc가 특정 인코딩을 사용하도록 지정하는 방법을 알 수 없다는 것입니다. 나는 쉘에 대해 $ LANG을 변경하는 실험을 해봤지만 아무런 효과가 없다.

인코딩 문제는 어디에 있으며 어떻게 해결할 수 있습니까?

답변

1

JavascriptCode가 UTF8 입력 파일을 지원하지 않는 것 같습니다 (Terminal이 여기에서 제공하는 것입니다).

예를 들어 node.js은 올바르게 처리됩니다.

단순한 경우 약간 확장 된 8 비트 문자 세트 CP1252를 사용할 수 있습니다. 당신이 파일 a.txt에 위의 인쇄 명령을 넣어 변환하는 iconv를 사용하는 경우, 즉 :

iconv -f utf-8 -t CP1252 a.txt >aa.txt 

을 이제 jsc aa.txt을 실행할 수 있으며 원하는 출력 (héllo world)을 얻는다.

또 다른 (불편한) 옵션은 문자열에서 유니 코드 코드 포인트를 직접 사용하는 것입니다. 즉, 귀하의 예는 다음과 같습니다.

print('h\u00E9llo world');