非ASCII字符顯示


非ASCII字符顯示

1. 問題背景

跟非ASCII字符顯示相關的問題遇到過兩次:

1.1 zip壓縮包中含有中文命名的文件,解壓后文件名顯示亂碼

1.2 C#-WinForm程序改造項目中,遇到一些德語顯示成亂碼中文的問題。由於德語比英語的26個字符多出4個字符(ä ö ü ß),即ASCII編碼中沒有這多出來的4個字符的編碼。

2. 解決方法

針對問題1.1,修改系統選項:Control Panel\Clock and Region-->Administrative-->Change system locale中改為Chinese(Simplified,China)

針對問題1.2,修改系統選項:Control Panel\Clock and Region-->Administrative-->Change system locale中改為German(Germany)。

3. 原因分析

從上圖中系統對system locale的解釋,它是當某程序不支持Unicode時,系統對特殊字符采用那種本地化解碼格式來顯示。

下面以Nodepad++顯示一個txt文件為例:

首先以UTF-8格式創建一個txt文本,並寫入一些非ASCII字符。

當把該txt文本的編碼格式改為ANSI(ASCII)后,如果system locale為Chinese(Simplified,China)時,顯示如下:

當把該txt文本的編碼格式改為ANSI(ASCII)后,如果system locale為German(Germany)時,顯示同UTF-8格式的顯示。

總結下,如果該txt文本的編碼是ASCII,但是其中又包含了一些非ASCII字符,系統就會按照system locale設置來顯示這些非ASCII字符。

那么,對於問題1.2就可以有另外一種解決方法:將C#程序中與顯示文字相關的.cs文件以UTF-8格式轉儲即可。

轉載請注明出處:https://www.cnblogs.com/lichu-lc/p/13194384.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM