日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> ARM+LINUX嵌入式系統(tǒng)的終端顯示中文亂碼解決
新聞資訊
NEWS INFORMATION

ARM+LINUX嵌入式系統(tǒng)的終端顯示中文亂碼解決

發(fā)布時間:2019-05-22

前一段時間解決的一個問題,看起來是個小問題,實際解決這個問題卻花了一個星期的晚上休息時間,記錄分享一下。

問題描述:

linux內(nèi)核配置中NLS(native language support)已經(jīng)選擇了默認語言配置為utf8,并包含一些其他常用語言的編碼,但是在secureCRT的telnet和串口終端顯示中文文件名均為亂碼。

解決過程:

1.剛開始以為是簡單的編碼不匹配的問題,修改secureCRT中的傳輸編碼方式從默認變?yōu)閡tf8,中文不再亂碼,但變成了問號,“??????”;

 

2.因為中文目錄是在掛載的SD卡中的(居然沒有嘗試一下網(wǎng)絡掛載或者其他的方式下中文是否亂碼,汗),懷疑是掛載SD卡方式不對。網(wǎng)上解答全部都是說,編譯內(nèi)核的時候fat文件系統(tǒng)的codepage和isochaset配置對,掛載時選擇vfat,-o命令選擇codepage和isocharset匹配就好了,具體的命令是,mount -t vfat -o codepage=936,iocharset=utf8 /dev/mmcblk0p1 /home/。然后接下來幾天晚上就一直在鼓搗這些東西,無解;

 

3.有一天忽然找到一篇博文,說是busybox的原因,高版本的busybox取消了中文支持,想不到還有這茬。進入busybox配置,發(fā)現(xiàn)已經(jīng)勾選了Unicode的支持。如此按博文提示,還需要修改busybox中的另外兩個文件printable_string.c以及unicode.c,把大于0x7f替換為問號的這個選擇條件去掉才行?戳艘幌略创a,覺得改的地方都是不勾Unicode才需要改的……不過還是試一下吧,重新配置編譯busybox,替換根文件系統(tǒng),不過問題依舊……

 

4.既然上面的提示中已經(jīng)發(fā)現(xiàn)不勾選Unicode支持中文的方式,那就先試一下不支持Unicode顯示中文的方式吧,修改printable_string.c以及unicode.c,重新編譯,燒寫啟動設備,發(fā)現(xiàn)去掉Unicode果然中文支持了,不再顯示問號;

 

5.但是這樣子草草了事明顯是不行的,那又是為什么勾選Unicode支持后中文變問號呢?那就只能讀源碼了,還好范圍也可以接受,問題應該就出在修改的兩個文件里面。

 

6.LAST_SUPPORTED_WCHAR,通過busybox源碼,可以發(fā)現(xiàn)有這么一個判斷if (wc > CONFIG_LAST_SUPPORTED_WCHAR){go subset;},而在subset的地方,wc被賦值為問號,這下問題就明朗了,明顯是這個LAST_SUPPORTED_WCHAR搞的鬼;

 

7.查看busybox配置,發(fā)現(xiàn)這個宏定義表示的是Range of supported Unicode characters,默認填的值才700多,而中文在Unicode中的位置查了一下最高到U+2FA1D,隨便給這個值改了一個大于2FA1D的值,重新編譯燒寫根文件系統(tǒng),中文顯示成功!

 

 

走了不少彎路,好在最后問題是解決了!最后記錄一下,busybox版本是1.19.4!

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

叙永县| 甘洛县| 乌什县| 仁怀市| 盐池县| 赫章县| 华安县| 军事| 尖扎县| 商都县| 特克斯县| 海原县| 涡阳县| 呼伦贝尔市| 修水县| 陇南市| 巢湖市| 乐业县| 富川| 额济纳旗| 凌云县| 黄龙县| 阿图什市| 河北省| 津市市| 青川县| 余庆县| 宝鸡市| 蓬溪县| 布拖县| 安远县| 时尚| 梁河县| 新邵县| 舒城县| 汉阴县| 丹巴县| 阜宁县| 乌鲁木齐县| 和政县| 辉县市|