同样一个UTF-8的源代码文件,内有字符串是中文, 在VS2003下编译后,字符串是UTF8格式(我的理想结果),便是在2005下编译后,字符串的编码好像不是UTF8,运得时为GB2312. 想请教各位大虾是怎么回事,有没有办法解决2005编译后得不到UTF8字符串的方法?

解决方案 »

  1.   

    不必使用UTF-8的源代码文件,用ANSI编码就行。然后在代码中统一用MultiByteToWideChar转换成utf-8就可以了。
      

  2.   

    我是要写多系统兼容的代码, LINUX下好像用的是UTF-8
      

  3.   

    在vs2005的File菜单下有一个Advanced Save Options选项,可以转换你的源文件到任意的编码格式,试试看?
      

  4.   

    我要的是编译后字符串为UTF-8格式, 并是不是不能编译
      

  5.   

    源代中的是UTF-8编译, 但是经过VS2005编译后在生成的EXE文件里找好的字符串就成了宽字节,运行就就自动转成了GB2312的代码,这个问题在VS2003里是没有的,同样的代码,VS生成的EXE中找不了字符串宽字码, 运行时还是UTF-8类型,是理想的结果。为何2005就不能达到这个效过?
      

  6.   

    什么意思,原代码文件的编码和exe文件的字符串编码是两回事
      

  7.   

    我想要的结果是源码中多字常量运行时为UTF-8编码(汉字),在VS2005要怎么做里?
      

  8.   

    为兼容LINUX代码, 所以要用UNICODE 哎~ 看了这篇文章后,看来这个方法行不通,只能另外想办法了
    http://blog.csdn.net/darkdong/archive/2010/12/10/6067119.aspx
      

  9.   

    看这个行不行
    http://www.bureau14.fr/blogea/index.php/2009/04/utf-8-strings-in-visual-c/你兼容linux是什么意思
      

  10.   

    GTK+的源代码,在LINUX下是UTF-8格式的,其中的字符串包含中文,在LINUX下正常显示, 在WINDOWS下,用VS编译后,中文字符显示不出来。 调试时发现,字符编译不是UTF-8,而是ANSI了,这样再被GTK+的运行库转当成UTF-8转换为当地语言,就出错,而显不不出来了
      

  11.   

    windows用UTF-16
    在什么操作系统就应该用它最常用的编码,换到另一个操作系统就重新编译一下,不必使用同一种编码
      

  12.   

    比如说 
    void       gtk_window_set_title(GtkWindow *window,const gchar *title);
    gchar 定义就是char, 但时这个函数只接收UTF-8编译的char* 字串, 
    如果title指向一个常量字符串(内含中文), 我在每次使用前对title用UTF-8编码与title本身就是UTF-8编码的效率是有差别的。我想知道的是在windows下能不能把常量字符串的编码在编译器处理时改为utf-8编码?
      

  13.   

    我自己试出一种方法, 就是在常量字符串中使用转义符,这是可以实现,但代码的可读性很差,常量字符串是些\xXX\xXX...之类,不知道在VC编译时有没有指定不将常量字符串转化为ANSI的方法?
      

  14.   

    http://www.bureau14.fr/blogea/index.php/2009/04/utf-8-strings-in-visual-c/
    这个行不行还有帖子说vs2003之后就不行了
      

  15.   

    linux 下eclipse默认c/c++ utf-8 . win vs编译器ANSI/UNICODE 
    主要是char*的处理. 比如postgresql utf8编码. 查询出的字符串linux下不必转换.. win下还要转下
      

  16.   


    我测试过,  VS2003是可以的, VS2005就不行了
      

  17.   

    我改用VS2003编译,没问题, VS2005还没找到解决办法