Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

Qt Creator下的编码问题 C4819: 该文件包含不能在当前代码页(936)中表示的字符

查看数: 2804 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-4-16 21:32

正文摘要:

本帖最后由 Qter 于 2018-4-16 22:51 编辑 基于Qt creator开发 MinGW程序, 工具->选项->文本编辑器->行为 文件编码-> 默认编码:UTF-8 UTF-8 BOM: 目前存在了则保留 以上为默认选项 但切换到MSVC ...

回复

Qter 发表于 2020-2-12 22:24:24
本帖最后由 Qter 于 2021-4-4 07:04 编辑

一个汉字在不同的编码方式中占多少字节?

       1.在UTF-8中,一个汉字占3个字节(一个字符占一个字节)

      2.在ASCII码中,一个汉字占2个字节(一个字符占一个字节)

      3.在Unicode编码中,一个汉字占2个字节(一个字符同样占两个字节,所以JAVA中char a = '中';是可以的)

BOM即byte order mark

UTF-8文件中放置BOM主要是微软的习惯,但是放在别的系统上会出现问题。

不含BOM的UTF-8才是标准形式,UTF-8不需要BOM

带BOM的UTF-8文件的开头会有U+FEFF,所以我新建的空文件会有3字节的大小。

三、创建UTF-8(而非UTF-8 BOM)文件的方法

在发现文件另存为UTF-8缺得到UTF-8 BOM文件后,我们怎样才能得到UTF-8呢?

法1.先另存为UTF-8保存,再使用notepad++打开,把里面的编码设置为无BOM的UTF-8然后保存。(此方法治标不治本,因为当你再次在里面写汉字时,文件会自动变成UTF-8 BOM)

法2.用JAVA代码

可以很轻松的创建UTF-8文件,且可以随便写汉字,文件字节数=汉字数*3

———————————————

BOM:byte order mark,定义字节顺序,因为网络传输中分为两种,大头和小头。uft-8不需要bom表明字节顺序,但可以用BOM来表示编码方式,windows就是采用bom来标记文本文件的编码方式的。


bom是为utf-16和utf-32准备的,用于标记字节顺序。微软在utf-8中使用bom是因为这样可以把UTF-8和ASCII等编码区分开来,但这样的文件在windows之外的操作系统里会带来问题。


不含bom的UTF-8才是标准形式。UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。

UTF-8 的网页代码不应使用 BOM,否则常常会出错。

————————————————

BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。UTF-8不推荐使用无意义的BOM,但许多Windows程序却在保存UTF-8编码的文件时将其存为带BOM的格式(即在文件开头加上0xEFBBBF三个字节),这么干的就包括Windows记事本,这种编码格式的文件在 Windows 之外的操作系统里会出现问题。

解决方案   

    建议大家使用Notepad++编辑,在 菜单栏-编码 中选择以 UTF-8 无BOM格式编码。


https://blog.csdn.net/esonbest1234/article/details/50729484

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-23 03:38 , Processed in 0.060848 second(s), 23 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表