2012-01-12 3 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.

Я знаю, что текст тарабарщины является неправильной интерпретацией кодировки символов. Дело в том, что я не могу понять, как сказать jsc использовать конкретную кодировку. Я экспериментировал с изменением $ LANG для моей оболочки, но это не имеет никакого эффекта.

Где происходит проблема с кодировкой и как ее исправить?

ответ

1

Кажется, что JavascriptCode не поддерживает входные файлы UTF8 (это то, что дает терминал здесь).

С интересом заметили, что node.js действительно корректно обрабатывает ваш пример.

В вашем простом случае может быть возможно использовать немного расширенный 8-битный набор символов CP1252. Т.е., если вы поставите выше команду печати в файл a.txt и использовать iconv, чтобы преобразовать его:

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

Вы можете запустить jsc aa.txt и вы получите желаемый результат (héllo world).

Другой (неудобный) вариант - использовать коды кода Unicode непосредственно в ваших строках. I.e., ваш пример будет выглядеть так:

print('h\u00E9llo world'); 
Смежные вопросы