Ich möchte aus dem Buildroot ein 32-Bit x86 ISO-Image erstellen, das Unicode-Zeichen anzeigen kann. Wie mache ich das?
- In
make menuconfig
habe ichBR2_ENABLE_LOCALE_WHITELIST="C en_US en_US.UTF-8"
- In habe ich , , , , , , ,
make busybox-menuconfig
eingestelltCONFIG_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
- Auf der Kompiliermaschine (basierend auf Debian) habe ich das
locales
Paket installiert und ausgeführtsed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen; locale-gen
Beim Erstellen des Bildes wird jedoch in Textdateien gespeicherter oder in das Terminal eingegebener Unicode-Text verstümmelt ausgegeben.
Eine Möglichkeit, die ich teste, besteht darin, sie echo -e '\xe2\x82\xac'
in der Shell auszuführen. Dadurch sollte das Symbol für den Euro gedruckt werden, was auf dem Terminal meines Macs auch geschieht. Im resultierenden ISO-Image sehe ich jedoch:
unfortunate # echo -e '\xe2\x82\xac'
â¬
Umfassenderer Kontext
- Mein Hauptprojekt ist hierhttps://github.com/mrled/unfortunate/(beachten Sie die Untermodule)
- Die von mir verwendete Defconfig-Datei befindet sich unterhttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/configs/v86_defconfig
- Die von mir verwendete Busybox-Konfiguration isthttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/board/v86/busybox.config
- Die Kernelkonfiguration, die ich verwende, isthttps://github.com/mrled/unfortunate-browser-vm/blob/03dfb210d57a0e665da5cee108c2d9c052d66f5b/buildroot-v86/board/v86/linux.config
- Dieses Projekt ist eigentlich für die Ausführung im v86-Browser-Emulator (Client-Seite!) x86 vorgesehen, Sie können meinen
echo
Befehl also selbst hier ausprobieren:https://unfortunate.micahrl.com(Das Booten der virtuellen Maschine kann 15–30 Sekunden dauern.)
Antwort1
Unter Debian gibt es ein unicode_start
Shellskript, das das System für UTF-8 einrichtet. Die wichtigsten Befehle, die Sie in Ihrer Shell ausführen sollten, sind:
printf '\033%%G'
stty iutf8
Ich habe diese im sehr interessanten StackExchange-Thread gefunden:Wie kann ich die UTF-8-Unterstützung in der Linux-Konsole aktivieren?
Ich habe auch Probleme, auf meinem Buildroot-System eine vernünftige Unicode-Konfiguration einzurichten, und diese Befehle haben ein wenig geholfen, aber ich habe immer noch Probleme mit in UTF-8 kodiertem Shellscript, das sich auf meinem Zielsystem nicht korrekt ausführen lässt.
Hoffe, das hilft! Grüße, Hugues