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

  • 相关阅读:
    AtomicLong与LongAdder的区别
    记录Vmware Workstation及Centos6.8 的安装
    java.lang.NoSuchMethodError问题处理
    java读取UTF-8的txt文件发现开头的一个字符问题
    Java多线程之内存可见性和原子性:Synchronized和Volatile的比较
    关于怎么解决java.lang.NoClassDefFoundError错误
    使用SFTP工具相关问题
    resin中关于url rewrite来传递jsessionid的问题
    Linux常用命令
    Jenkins简单安装及配置(Windows环境)
  • 原文地址:https://www.cnblogs.com/retry/p/11177602.html
Copyright © 2011-2022 走看看