2012-01-12 13 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)を取得します。

別の(不都合な)オプションは、文字列にUnicodeコードポイントを直接使用することです。つまり、例は次のようになります。

print('h\u00E9llo world'); 
関連する問題