调查一下:用C/C++编程,编码一般用UTF-8还是用GB2312/GBK/GB18030???

nlper 2011-08-29 05:32:57
如题
...全文
1118 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyjkchen 2011-08-29
  • 打赏
  • 举报
回复
GBK转UTF16

UTF8转UTF16
Windows API是同一个函数,我觉得微软这种观点是合理的

GBK也是变长编码,英文1字节,汉字2字节,和
UTF8的英文1字节,汉字3字节,编码方式类似

只不过UTF8最长编码能达到6字节,码字空间更大,能达到国际化容纳所有UNICODE字符而已
luciferisnotsatan 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 luciferisnotsatan 的回复:]

vc默认ansi,简中对应gb2312
[/Quote]
简中系统,对应gb2312
luciferisnotsatan 2011-08-29
  • 打赏
  • 举报
回复
vc默认ansi,简中对应gb2312
jackyjkchen 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bokutake 的回复:]

引用 5 楼 jackyjkchen 的回复:

1.如果是源文件,看你的编译环境,VC一般都是GBK,gcc一般用UTF8

2.如果说真正使用的字符集(参与运算和传递的),同样看你的编译环境,VC推荐UTF16,因为内核就是UTF16,效率高,并且尽量使用T系列的宏和函数似的ANSI和UTF16同时兼容;如果是gcc,相反,尽量使用UTF8,别用wchar_t系列的宽字节,gcc/L……
[/Quote]

UTF8不是WideChar,而是MBCS,您的反问应该改成肯定句,至少M$这么认为

因为UTF8是变长编码,不能使用wchar_t存储,也是char*

再看windows api,MultiByteToWideChar,改变第一个参数,可以将UTF8转成UTF16

WideCharToMultiByte,可将UTF16转为UTF8
辰岡墨竹 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jackyjkchen 的回复:]

1.如果是源文件,看你的编译环境,VC一般都是GBK,gcc一般用UTF8

2.如果说真正使用的字符集(参与运算和传递的),同样看你的编译环境,VC推荐UTF16,因为内核就是UTF16,效率高,并且尽量使用T系列的宏和函数似的ANSI和UTF16同时兼容;如果是gcc,相反,尽量使用UTF8,别用wchar_t系列的宽字节,gcc/Linux对宽字节的支持并不好,特别是宽窄混用的话
[/Quote]

难道UTF-8不是WideChar的一种么?如果不是,难道UTF-8是MBCS么?
只不过Linux下wchar_t是4个字节,这个对于UTF-8也合适,保存一个编码元没问题。只不过Linux的内核就是UTF-8的,而对UTF-16LE支持比较差罢了。
hongwenjun 2011-08-29
  • 打赏
  • 举报
回复
学习 C++ ,控制台输出,所以 用GBK,省事情
limang89 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jackyjkchen 的回复:]

1.如果是源文件,看你的编译环境,VC一般都是GBK,gcc一般用UTF8

2.如果说真正使用的字符集(参与运算和传递的),同样看你的编译环境,VC推荐UTF16,因为内核就是UTF16,效率高,并且尽量使用T系列的宏和函数似的ANSI和UTF16同时兼容;如果是gcc,相反,尽量使用UTF8,别用wchar_t系列的宽字节,gcc/Linux对宽字节的支持并不好,特别是宽窄混用的话
[/Quote]

++
辰岡墨竹 2011-08-29
  • 打赏
  • 举报
回复
VS2005以后可以直接使用UTF-8文件(带BOM)。不过比较早的GNU只支持没有BOM的UTF-8,不过比较新版本是可以的。
建议用UTF-8,可以方便移植。
赵4老师 2011-08-29
  • 打赏
  • 举报
回复
GBK
xunxun 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jackyjkchen 的回复:]

1.如果是源文件,看你的编译环境,VC一般都是GBK,gcc一般用UTF8

2.如果说真正使用的字符集(参与运算和传递的),同样看你的编译环境,VC推荐UTF16,因为内核就是UTF16,效率高,并且尽量使用T系列的宏和函数似的ANSI和UTF16同时兼容;如果是gcc,相反,尽量使用UTF8,别用wchar_t系列的宽字节,gcc/Linux对宽字节的支持并不好,特别是宽窄混用的话
[/Quote]
主要是gcc的文件流方向……
jackyjkchen 2011-08-29
  • 打赏
  • 举报
回复
1.如果是源文件,看你的编译环境,VC一般都是GBK,gcc一般用UTF8

2.如果说真正使用的字符集(参与运算和传递的),同样看你的编译环境,VC推荐UTF16,因为内核就是UTF16,效率高,并且尽量使用T系列的宏和函数似的ANSI和UTF16同时兼容;如果是gcc,相反,尽量使用UTF8,别用wchar_t系列的宽字节,gcc/Linux对宽字节的支持并不好,特别是宽窄混用的话
nlper 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]

你说cpp文件本身的编码吗?
[/Quote]
是文件编码格式,不是置c/c++语言
尘缘udbwcso 2011-08-29
  • 打赏
  • 举报
回复
我只知道JAVA WEB一般用UTF-8
一叶之舟 2011-08-29
  • 打赏
  • 举报
回复
代码本身好像都是asiic,中文应该根据具体的要求选择不同的编码方式。
healer_kx 2011-08-29
  • 打赏
  • 举报
回复
你说cpp文件本身的编码吗?

15,446

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧