zoukankan      html  css  js  c++  java
  • 非ASCII字符显示

    非ASCII字符显示

    1. 问题背景

    跟非ASCII字符显示相关的问题遇到过两次:

    1.1 zip压缩包中含有中文命名的文件,解压后文件名显示乱码

    1.2 C#-WinForm程序改造项目中,遇到一些德语显示成乱码中文的问题。由于德语比英语的26个字符多出4个字符(ä ö ü ß),即ASCII编码中没有这多出来的4个字符的编码。

    2. 解决方法

    针对问题1.1,修改系统选项:Control PanelClock and Region-->Administrative-->Change system locale中改为Chinese(Simplified,China)

    针对问题1.2,修改系统选项:Control PanelClock 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

  • 相关阅读:
    [考试反思]0904NOIP模拟测试37:守望
    游戏:最短路,拆点
    [考试反思]0903NOIP模拟测试36:复始
    [考试反思]0902NOIP模拟测试35:摆动
    长寿花:dp
    [考试反思]0901NOIP模拟测试34:游离
    赤壁情:dp
    [考试反思]0829NOIP模拟测试33:仰望
    [考试反思]0828NOIP模拟测试32:沉底
    宅男计划:单峰函数三分
  • 原文地址:https://www.cnblogs.com/lichu-lc/p/13194384.html
Copyright © 2011-2022 走看看