CL-JSON を使用してオブジェクトをエンコードしています。エンコードされた文字列を ASCII 形式で出力し、非 ASCII 文字は「\uxxxx」形式の一連の ASCII 文字として書き出されます。その結果、出力ファイル ストリームを外部フォーマット :utf-8 で開いても、ファイルには ASCII 文字しか含まれません。たとえば、メモ帳 ++ で表示しようとすると、すべてのデータが ASCII (「\uXXXX」シーケンスであっても) になるため、Unicode に変換できません。ファイルを自動的に Unicode に変換し、それらのエスケープ シーケンスを認識するエディターがあるかどうか、または出力文字を Unicode で保持するように CL-JSON に指示する方法があるかどうかを知りたいです。何か案は?
編集:ここにいくつかの詳細情報があります:
CL-USER>(with-open-file (out "dump.json"
:direction :output
:if-does-not-exist :create
:if-exists :overwrite
:external-format :utf-8)
(json:encode-json '("abcd" "αβγδ") out)
(format out "~%"))
CL-USER>(quit)
bash$ file dump.json
dump.json: ASCII text
bash$ cat dump.json
["abcd","\u03B1\u03B2\u03B3\u03B4"]
bash$ uname -a
Linux suse-server 3.0.38-0.5-default #1 SMP Fri Aug 3 09:02:17 UTC 2012 (358029e) x86_64 x86_64 x86_64 GNU/Linux
bash$ sbcl --version
SBCL 1.0.50
bash$
EDIT2:
YASON は必要なことを行い、\uXXXX 形式でエスケープせずに文字を出力しますが、残念ながら必要な機能がないため、オプションではありません。