Unicode 文字を表示できる 32 ビット x86 ISO イメージを buildroot からビルドしたいです。どうすればできますか?
- では
make menuconfig
、私はBR2_ENABLE_LOCALE_WHITELIST="C en_US en_US.UTF-8"
- では、、、、、、、、を設定しまし
make busybox-menuconfig
た。CONFIG_UNICODE_SUPPORT=y
CONFIG_UNICODE_USING_LOCALE=y
CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y
CONFIG_UNICODE_COMBINING_WCHARS=y
CONFIG_UNICODE_WIDE_WCHARS=y
CONFIG_UNICODE_BIDI_SUPPORT=y
CONFIG_UNICODE_NEUTRAL_TABLE=y
CONFIG_UNICODE_PRESERVE_BROKEN=y
- コンパイルマシン(Debianベース)にパッケージをインストールして
locales
実行しました。sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen; locale-gen
しかし、イメージをビルドすると、テキスト ファイルに保存された、またはターミナルに入力された Unicode テキストが文字化けして表示されます。
テストする方法の 1 つは、echo -e '\xe2\x82\xac'
シェルで実行することです。これにより、ユーロの記号が印刷されるはずですが、Mac のターミナルでは実際に印刷されます。ただし、結果の ISO イメージでは、次のようになります。
unfortunate # echo -e '\xe2\x82\xac'
â¬
より完全なコンテキスト
- 私の主なプロジェクトはここにありますhttps://github.com/mrled/unfortunate/(サブモジュールに注意してください)
- 私が使用しているdefconfigファイルは次の場所にありますhttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/configs/v86_defconfig
- 私が使用しているbusyboxの設定はhttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/board/v86/busybox.config
- 私が使用しているカーネル設定はhttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/board/v86/linux.config
- このプロジェクトは実際にはv86ブラウザ内(クライアント側!)x86エミュレータで実行することを目的としているので、私の
echo
コマンドを自分で試すことができます。https://unfortunate.micahrl.com(仮想マシンの起動には15~30秒かかる場合があります。)
答え1
unicode_start
Debian には、システムを UTF-8 用に設定するシェルスクリプトがあります。シェルで実行する必要がある主なコマンドは次のとおりです。
printf '\033%%G'
stty iutf8
私はそれらを非常に興味深い StackExchange スレッドで見つけました:Linux コンソールで UTF-8 サポートを有効にするにはどうすればいいですか?
私も、buildroot システムで適切な Unicode 設定を行うのに苦労しており、これらのコマンドは少しは役立ちましたが、ターゲット システムで正しく実行されない UTF-8 でエンコードされたシェルスクリプトの問題にまだ直面しています。
お役に立てれば幸いです。よろしくお願いします。Hugues