编码,字符集 问题

风起浮尘 2011-09-08 05:56:32
网上看了很多,但是还是有些不理解,就拿文件main.cpp来说:
有片段

wchar_t* wc= L"你好!";
char* c = "你好!";

保存main.cpp的编码格式为gb2312,用二进制打开"你好!"是 C4 E3 BA C3 21
保存main.cpp的编码格式为utf-8,用二进制打开"你好!"是E4 BD A0 E5 A5 BD 21
保存main.cpp的编码格式为utf-16LE,用二进制打开"你好!"是60 4F 7D 59 21 00
在内存中都是一样的:

//wc
60 4f 7d 59 21 00 00
//c
c4 e3 ba c3 21 00


那么编程的时候选择多字节还是宽字节,有什么优缺点?
我一般编程都是用多字节,看不到宽字节优势。

保存文件用什么编码,utf还是aiscc的?
我感觉选用asicc在vs和linux下面都不会有乱码现象;但是用utf的话,在linux下面还好,代码到win下面一修改,里面的中文注释简直就乱套了。

网上大家说的用Unicode指的是宽字节吧?
...全文
64 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyjkchen 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 scu_zhou 的回复:]

引用 2 楼 jackyjkchen 的回复:

不用纠结,源代码编码就用默认的就可以

你是gcc?

如果VC
无论源代码编码如何,上述代码都是一样的

1楼所说的是使用wchar还是char的问题,另一个方面了

是在vs下测试的。不过平时用到arm-linux-gcc和vs。

项目有部分文件在两个系统上编译,这些编码引起的问题太烦了

以后还是用拼音注释算……
[/Quote]

有多语言注释的话还是用unicode编码,我这里VS2010,char*的数据肯定是本机编码,不会因为源码改成utf8,char*的内容也成了utf8的
风起浮尘 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jackyjkchen 的回复:]

不用纠结,源代码编码就用默认的就可以

你是gcc?

如果VC
无论源代码编码如何,上述代码都是一样的

1楼所说的是使用wchar还是char的问题,另一个方面了
[/Quote]
是在vs下测试的。不过平时用到arm-linux-gcc和vs。

项目有部分文件在两个系统上编译,这些编码引起的问题太烦了

以后还是用拼音注释算了。
风起浮尘 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jokul_lee 的回复:]

引用楼主 scu_zhou 的回复:
网上看了很多,但是还是有些不理解,就拿文件main.cpp来说:
有片段
C/C++ code

wchar_t* wc= L"你好!";
char* c = "你好!";


保存main.cpp的编码格式为gb2312,用二进制打开"你好!"是 C4 E3 BA C3 21
保存main.cpp的编码格式为utf-8,用二进制打开"你……
[/Quote]

以前没有碰到过,是个需要考虑的地方。
jackyjkchen 2011-09-08
  • 打赏
  • 举报
回复
不用纠结,源代码编码就用默认的就可以

你是gcc?

如果VC
无论源代码编码如何,上述代码都是一样的

1楼所说的是使用wchar还是char的问题,另一个方面了
Jokul_Lee 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 scu_zhou 的回复:]
网上看了很多,但是还是有些不理解,就拿文件main.cpp来说:
有片段
C/C++ code

wchar_t* wc= L"你好!";
char* c = "你好!";


保存main.cpp的编码格式为gb2312,用二进制打开"你好!"是 C4 E3 BA C3 21
保存main.cpp的编码格式为utf-8,用二进制打开"你好!"是E4 BD A0 E5 A……
[/Quote]恩,我说一个我知道的,在引导中文路径的时候,通常会用到宽字符,否则可能出错

64,633

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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