当前位置: 技术问答>linux和unix
cpp程序中中文的处理
来源: 互联网 发布时间:2016-12-06
本文导语: 有下面一段cpp程序, G_GERR_SETSTRW(GERR_SYS_FATAL, L"提取发生错误"); 源代码是utf8(with signature)格式的。在windows下编译正常. 后来移植到Linux下(redhat5.3版本),就产生了如下错误:程序中有游离的‘357’,如是将源码改...
有下面一段cpp程序,
G_GERR_SETSTRW(GERR_SYS_FATAL, L"提取发生错误");
源代码是utf8(with signature)格式的。在windows下编译正常.
后来移植到Linux下(redhat5.3版本),就产生了如下错误:程序中有游离的‘357’,如是将源码改成了ANSI格式的。
此时,windows下仍正常编译,但Linux下产生如下错误:converting to execution character set:无效或不完整的多字节字符或宽字符
又查了下资料,说源码应该改成utf-8(without signature)格式的,此时,Linux下正常编译,但是windows下就产生了如下警告:
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
请问下,我到底该如何修改,才能让Linux和windows下都能正常编译呢?谢谢大家了
G_GERR_SETSTRW(GERR_SYS_FATAL, L"提取发生错误");
源代码是utf8(with signature)格式的。在windows下编译正常.
后来移植到Linux下(redhat5.3版本),就产生了如下错误:程序中有游离的‘357’,如是将源码改成了ANSI格式的。
此时,windows下仍正常编译,但Linux下产生如下错误:converting to execution character set:无效或不完整的多字节字符或宽字符
又查了下资料,说源码应该改成utf-8(without signature)格式的,此时,Linux下正常编译,但是windows下就产生了如下警告:
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
请问下,我到底该如何修改,才能让Linux和windows下都能正常编译呢?谢谢大家了
|
gcc加入编译开关
-finput-charset=gbk
试试
-finput-charset=gbk
试试
|
文件头,你有一个16进制的编辑器打开你的文件会发现多了一个文件头,而gcc是不支持有文件头的文件的。
VS是支持没有文件头的utf8文件的,你只能是忽略windows的那个警告了。
VS是支持没有文件头的utf8文件的,你只能是忽略windows的那个警告了。
|
我们以前开发源代码只放英文版,其它语言通过 txt类文件由代码加载。