JavaScriptCore borked strings - 字符编码问题

时间:2012-01-12 23:42:16

标签: javascript macos shell character-encoding

我正在尝试使用JavaScriptCore从终端进行一些字符串操作,但我无法解决某种字符编码问题。

如果我在终端中运行:

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

显然应该打印héllo world,而是打印héllo world。如果我在jsc交互模式中运行print语句,会发生相同的结果。

我知道乱码文本是一个不正确的字符编码翻译问题。问题是,我无法弄清楚如何告诉jsc使用特定的编码。我已尝试为我的shell更改$ LANG,但这没有效果。

编码问题发生在哪里?如何解决?

1 个答案:

答案 0 :(得分: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)。

另一个(不方便)选项是直接在字符串中使用Unicode代码点。即,你的例子看起来像这样:

print('h\u00E9llo world');
相关问题