hur.cn - 华软网

 热门搜索

UTF-8编码在VS2008编辑器中的问题

  作者:未知    来源:网络    更新时间:2011/1/12
字符串常量以下:

数据库.db”
"test.db"

在vs2008编辑器中以上常量的编码分别是什么?

问题来源:sqlite数据库需要传送utf-8格式的路径,传上面第一个路径后,自动创建的数据库中文名字不能正常显示为“数据库.db”,需呀WideCharToMultiByte转换后再传送才能显示(在转换时需要将字符常量加上‘L’),第二个能够直接运用!什么原因?在编辑器中这些字符串常量是什么编码?
---华软 网友回答---
1、字符串的编码就是你工程里选择的,只有unicode和多字节,没有utf8,所以utf8是必需要转换才能用
2、utf8编码里面ascii码是不变的,所以你第二个就对了,而第一个里面包括了中文就必需转换
---华软网友回复---
设置中选择的字符集以下
Use Unicode Character Set
---华软网友回复---
引用 1 楼 varding 的回复:
1、字符串的编码就是你工程里选择的,只有unicode和多字节,没有utf8,所以utf8是必需要转换才能用
2、utf8编码里面ascii码是不变的,所以你第二个就对了,而第一个里面包括了中文就必需转换

那么字符串常量在编辑器中是以ASCII编码的照旧Unicode编码的?难道属于ASCII中的就用ASCII编码,其它字符就用Unicode编码?
---华软网友回复---
引用 3 楼 zgklem 的回复:
引用 1 楼 varding 的回复:
1、字符串的编码就是你工程里选择的,只有unicode和多字节,没有utf8,所以utf8是必需要转换才能用
2、utf8编码里面ascii码是不变的,所以你第二个就对了,而第一个里面包括了中文就必需转换

那么字符串常量在编辑器中是以ASCII编码的照旧Unicode编码的?难道属于ASCII中的就用ASCII编码,其它字符就用Unicode编码……

看你怎么定义的了:
比如:char* p = "test.db";不论你选择啥编码都是多字节的(ascii码了)

TCHAR* P = _T("test.db"); 这个你选啥编码他就是啥,能够看看TCHAR定义

WCHAR* p  = _T("test.db");这个在unicode下就是unicode编码了
---华软网友回复---
引用 4 楼 varding 的回复:
引用 3 楼 zgklem 的回复:

引用 1 楼 varding 的回复:
1、字符串的编码就是你工程里选择的,只有unicode和多字节,没有utf8,所以utf8是必需要转换才能用
2、utf8编码里面ascii码是不变的,所以你第二个就对了,而第一个里面包括了中文就必需转换

那么字符串常量在编辑器中是以ASCII编码的照旧Unicode编码的?难道属于ASCII中的就用AS……

那么
char* p="数据库.db";是什么编码?
---华软网友回复---
引用 5 楼 zgklem 的回复:
引用 4 楼 varding 的回复:
引用 3 楼 zgklem 的回复:

引用 1 楼 varding 的回复:
1、字符串的编码就是你工程里选择的,只有unicode和多字节,没有utf8,所以utf8是必需要转换才能用
2、utf8编码里面ascii码是不变的,所以你第二个就对了,而第一个里面包括了中文就必需转换

那么字符串常量在编辑器中是以ASCII编码的照旧Unic……


多字节编码,就是汉字2字节,ascii码一个字节的夹杂体
---华软网友回复---
其实你设置了工程编码方式,比如:多字节和unicode,其实不是说你的字符串全数酿成多字节和unicode了,只是说windows的api全数“需要”这类编码了,字符串编码方式照旧你自己搞的
---华软网友回复---
  class="deleted_message"> 该回复于2011-01-12 16:29:40被版主删除
---华软网友回复---
你工程的设置决意了所有的字符存储形式。然后根据你工程的设置对字符串举行转换
---华软网友回复---
引用 7 楼 varding 的回复:
其实你设置了工程编码方式,比如:多字节和unicode,其实不是说你的字符串全数酿成多字节和unicode了,只是说windows的api全数“需要”这类编码了,字符串编码方式照旧你自己搞的

在理。
---华软网友回复---
引用 6 楼 varding 的回复:
引用 5 楼 zgklem 的回复:

引用 4 楼 varding 的回复:
引用 3 楼 zgklem 的回复:

引用 1 楼 varding 的回复:
1、字符串的编码就是你工程里选择的,只有unicode和多字节,没有utf8,所以utf8是必需要转换才能用
2、utf8编码里面ascii码是不变的,所以你第二个就对了,而第一个里面包括了中文就必需转换

那么字符串常量……

适才用记事本做了个实验,我用gb2312保存了“数据库”这几个字符,然后用utf8打开,显示出的字符串为“口”,和我上面提到的sqlite生成的数据库名称一样,看来,在中文操作系统中,char指针指向的字符串常量应该是采取GB2312编码的,在另一楼里有位大侠也是这样说的!

谢谢大侠的指点!
---华软网友回复---
把这个问题弄清楚对照重要!让大家先看一会吧,晚上再结贴!结贴后大家可能就看不到了!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。