我想從 buildroot 建立一個可以顯示 Unicode 字元的 32 位元 x86 ISO 映像。我怎樣才能做到這一點?
- 在 中
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 文字會出現亂碼。
我測試的一種方法是echo -e '\xe2\x82\xac'
在 shell 中運行。這應該會列印歐元符號,這在我的 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
在 Debian 上,有一些unicode_start
shellscript 可以將系統設定為 UTF-8。您應該在 shell 中發出的主要命令是:
printf '\033%%G'
stty iutf8
我在非常有趣的 StackExchange 線程中找到了這些:如何在 Linux 控制台中啟用 UTF-8 支援?
我也在努力在我的 buildroot 系統上建立一個像樣的 Unicode 設置,這些命令有點幫助,但我仍然面臨著以 UTF-8 編碼的 shellscript 的問題,這些問題拒絕在我的目標系統上正確執行。
希望有幫助!乾杯,休格斯