Python 2.6 のプロジェクトがあり、システム エンコーディングを使用して utf-8 メッセージを stdout に書き込みたいと考えています。ただし、そのような関数は Python 3.2 まで存在しないようです。
PySys_FormatStdout
http://docs.python.org/dev/c-api/sys.html
Python 2.6 からこれを行う方法はありますか?
明確にするために、Py_Initialize() の後、メイン インタープリターが実行される前に出力する必要があるバナーがあります。文字列は、"\n and Copyright \xC2\xA9" を含む c-literal です。
ここで、\xC2\xA9 は utf-8 著作権記号です。著作権記号が正しくエンコードされていることを gdb で確認しました。
更新: このような悲しみは必要ないと判断したので、スタートアップ バナーから問題のあるキャラクターを削除します。これには問題が多すぎて、ドキュメントが不足しています。私の期待は、これが Tcl のようなものになるだろうということでした。
- 組み込みインタープリターの C-API により、標準出力をシステムのエンコーディングでユニコードで簡単に書き出すことができ、デフォルトの ascii エンコーディングではありません。
- 問題のある文字が現在のエンコーディングに存在しない場合、例外はスローされません。代わりに、デフォルトの置換文字が表示されます。
- システムのエンコーディングを調べるためだけに、追加のモジュール (sys など) をインポートする必要はありません。