zoukankan      html  css  js  c++  java
  • 求助:字符的显示问题

    有一个文本文件“1.txt”,该文件非常简单,只有一行字符串“ab中国?12”,注意,其中“?”不是中文的问号,也不是英文的问号,它是一个非标准的字符,实际上占用两个字节,如下图所示:C6 32。由于没有对应的字符,所以无法正常显示,就显示成“?”。下面就是围绕着这个“?”所做的一些试验。

    一 UltraEdit

    下面是用UltraEdit 编辑器查看的效果。

    1 源文本:“?”对应的是两个字节:C6 32,显示如下:

    clip_image002

    2 ANSI格式:用UltraEdit另存为ansi/ascii格式的,“?”对应的是两个字节:C6 32,字节没缺失,显示如下:

    clip_image004

    3 UFT-8格式:用UltraEdit另存为UFT-8格式的,“?”对应的是1个字节:3F,就是英文问号?对应的ascii码,明显是少了一个字节,就是说在保存为UFT-8编码格式时,将C6 32变成了3F。显示如下:

    clip_image006

    4 UTF-16(UNICODE)格式:用UltraEdit另存为UTF-16格式的,即,UNICODE格式。“?”对应的是2个字节:3F 00,,就是英文问号?对应的UNICODE码。正常应该是C6 00 32 00,明显也是有字节丢失,显示如下:

    clip_image008

    二 Notepad编辑器

        下面是用Windows系统自带的文本编辑器Notepad打开文件1.txt,分别另存为几种不同编码格式的文件吗,然后用查看十六进制模式查看如下:

    源文本:“?”对应的是两个字节:C6 32,显示如下:

    clip_image009

    ANSI格式:“?”对应的是1个字节:3F,明显是少了一个字节,显示如下:

    clip_image011

    UTF-16(UNICODE)格式:“?”对应的是2个字节:3F 00,显示如下:

    clip_image013

    UFT-8格式:“?”对应的是1个字节:3F,显示如下:

    clip_image015

    三 拷贝粘贴后就发生了变化

         在UltraEdit中打开上述文件“1.txt”,然后复制其内容粘贴到新的文件“1拷贝.txt”中,其中“?”的字节内容就发生了变化,如下图所示:

    clip_image017

    clip_image019

         如上图所示,拷贝粘贴后,C6 32 就变成了3F,“?”所对应的字节就少了一个,这是为什么?

        综上,“?”本来占用两个字节:C6,00,但是经过不同的处理,很容易就变成了3F,也就是真正的英文?,这是为什么?

     

         求懂行的朋友赐教,谢谢!   

  • 相关阅读:
    Codeforces Round #588 (Div. 2) D Marcin and Training Camp
    DFS / BFS题目栏 (来自一个队友退役后,不得不,重拾图论的选手的叹息)
    Codeforces Round #588 (Div. 2) Anadi and Domino (dfs)
    Codeforces Round #585 (Div. 2) A,B,C,D
    【题解】牛客挑战赛32 (两道水题+一题矩阵快速幂)
    c/c++输入时间问题
    莫队 + 带修莫队
    hdu 5775 Bubble Sort (树状数组)
    UVALive 4329 Ping pong (树状数组)
    hdu 5754 Life Winner Bo(博弈)
  • 原文地址:https://www.cnblogs.com/xiongxuanwen/p/2373228.html
Copyright © 2011-2022 走看看