c++跨平台编码问题
2018-06-17 22:04:21来源:未知 阅读 ()
最近要将一个windows下的项目放到树莓派上,以便充分利用带宽资源,使其以夜继日的工作
在此记录一下编码问题和方案
在windows下,现在用的vs2015,创建的代码文件默认编码是ANSI,windows特有的概念,本地编码,结合实际情况就是gb232
vs在调试的时候,方便查看的有ANSI编码和unicode编码
在代码中,
以"你好,world"表示ANSI编码字符串
L"hello,世界"表示unicode编码字符串
以上两种表达方式,不受代码文件本身的编码方式影响
也就是说,windows下的代码源文件与文件的编码格式无关,在vs插件开发时候,实践中感受到的编码是unicode
对于linux编程,代码文件默认编码是utf8
在代码中,
以"你好,world"表示的字符串,编码以此文件的编码为准
对于L"hello,世界",本人未测试
在linux下,如果代码中出现中文,那么就必须使用utf8编码,否则一定编译报错
对于代码中没有非ancii编码字符的源码文件,ANSI和utf8都没什么问题
但如果出现中文,就出现了各种问题,针对上面的那些特性,采取了以下解决方案
源代码文件统一utf8编码,对于vs有一个插件可用 ForceUTF8
代码中的常量字符串统一为L"hello,世界"的unicode编码方式
同时,为了方便操作,给出utf8和unicode操作宏,方便utf8和unicode的字符串编码转换
在程序中,不要出现utf8和unicode以外的编码,
如果使用了非ascii码之外字符,比如汉字,一定使用L"hello,世界"格式,或者utf8(L"hello,世界")
如果只是使用了ascii码之内字符,"你好,world",L"hello,世界"都可以
参数常量等设计,首先unicode,其次utf8
unicode无论在识别和还是在调试查看上,都很方便
更改,添加于2017/08/28
之前鉴于需要在程序中使用中文,所以过于执着中文的支持
现在处理另一个问题,得到如果下新结论
不再使用插件
让vs自己保存编码,即为ansi,这样vs会很舒服
中文只能出现在注释里
在有效代码中,只能有标准ascii
如果程序要求中文
那么到配置文件中去读取,然后再使用(多语言版本的实现也在于此)
这样跨平台的问题完美解决
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:关路灯,洛谷dp
下一篇:P1151 子数整数
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash