zoukankan      html  css  js  c++  java
  • 软件编程含有中文的编码问题

    SI与codeblocks编码设置

    1、以UTF-8格式打开源码文件,并将UTF-8格式作为默认的编码模式。

    情况一:源文件的格式为UTF-8(str="中文")
    codeblocks的打开格式、保存格式、代码解析格式、内码编码格式、与设置一致,解析输出不能看到准确的汉子,这取决操作系统,因为国内windows操作系统cmd的输出是gbk,所以会有乱码,但是可以将编码的hex打印出来,就可以看到其内码格式为UTF-8。
    代码解析:即编辑器对c/c++这些语言的解析。
    情况二:源文件不是UTF-8
    code blocks尝试以UTF-8去打开时,发现解析不了,那么就会以另一种格式去解析,
    (中文解析格式替换出现在任何地方,不仅仅是注释,str=中文的话,也会出错)

    此时codeblocks的打开格式、保存格式、代码解析格式、内码编码格式等不可预料,所以不能允许出现此类情况。

    解决方式:
    1、Edit-File_reload,重新reload定义该文件的编码格式,将原先解析错误的字符删除,重新输入,并保存。
    举例:如果源文件编码格式为ASNI且包含有中文,codeblock()设置为UTF-8,没有设置GBK)打开后会以另一种不可预料的格式解析,此时中文就会乱码。即使通过file_reload,重新将文件编码格式定位为ASNI也解决不了乱码情况,(已经不可逆)。
    2、使用notpad++,将文件格式转为UTF-8,将原先解析错误的字符删除,重新输入,并保存。

    gbk与utf-8设置同样的道理。

    问题:
    若code blocks不指定解析内码的编码格式,那么会有一个严重的问题,当一个工程中的两个源文件,一个是utf8,一个gbk,那么在中文在内码的保存上1个是3个字节,1个是两个字节;
    utf8保存的是utf8的内码,gbk保存的是gb2312的编码。

    codeblock若不指定gcc的编译参数,其内码的解析格式与源文件的格式保持一致。vs编译器内码的解析格式与源文件的格式无关,与操作系统一致,始终为gbk。

    si

    默认编码模式,指的是对某一文件进行,编辑时文字以哪种方式进行保存,一旦编辑了文件,改文件就会以该编码模式进行保存。

    若只是查看,reload只是临时更改了,编码方式。若编辑则会按照设置的编码模式更改源文件的编码方式。

    vs
    //新建
    默认创建新建的文件编码方式为gb2312,这可以从高级系统设置中查看,默认都是第一个就是gb2312.

    此时若在vs创建了文件,也可以通过更改高级设置,更改编码方式,我们一般只用到utf8与gb2312

    //添加现有文件
    若现有文件为gbk,没有问题

    若文件为utf8编码,可能会出现乱码,错误现象,将下属打钩即可,导入进来的新的utf8文件,可从高级文件设置中看到变为了unicode,并不是之前默认的gb2312了。

    若此时中文乱码问题解决了,但是编译时候出现下述问题,请参考以下解决方案:
    https://blog.csdn.net/qq_36226393/article/details/77725493

    https://blog.csdn.net/lcb_coconut/article/details/76136725

    https://blog.csdn.net/yanchenyu365/article/details/84065719
    //注意的是:不论vs工程中文件本身的编码格式是什么,内码都是以操作系统的gbk编码进行存储。

    强烈建议在windows下编码时所有文件的编码方式都改gbk,

    若是编写linux下应用程序,文件编码方式全部都为utf8

    VS中多字节与unicode字节

    https://www.cnblogs.com/cnxkey/articles/7654971.html
    https://www.cnblogs.com/cnxkey/articles/7654971.html

  • 相关阅读:
    HDU 1114 Piggy-Bank
    HDU 2955 Robberies
    NTOJ 290 动物统计(加强版)
    POJ 3624 Charm Bracelet
    HDU 2602 Bone Collector
    POJ 1523 SPF(无向图割顶)
    HDU 5311 Hidden String
    HDU 1421 搬寝室
    HDU 1058 Humble Numbers
    POJ 3259 Wormholes(spfa判负环)
  • 原文地址:https://www.cnblogs.com/retry/p/11177602.html
Copyright © 2011-2022 走看看