首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

问几个编码有关问题

2012-02-09 
问几个编码问题1.字符串 用户列表 -- 请问 是什么编码?2.如果一个文件中有英文,有汉字,比如内容如

问几个编码问题
1.
字符串 "用户列表 "     -->   "用户列表 "

请问 "用户列表 "是什么编码?

2.
如果一个文件中有英文,   有汉字,   比如内容如下:
    I   am   "字符串 "
我怎样写一个程序,   自动将改文件中的中文改成问题一里的编码??   我怎么样判断是中文呢??

[解决办法]
1)应该是GB2312吧,你把他们分别转成16进制看看
2)最简单的判断网上有,我记得判断两个字节是否> 0xA0,你自己查查看
[解决办法]
1.是unicode编码

具体可在表中查找
http://www.chi2ko.com/tool/CJK.htm

2.可以将字符串转换为宽字符串类型 WideString

wchar_t a=0x7528;//用
wchar_t b=0x6237;//户
ShowMessage(WideString(a)+WideString(b));//显示“用户”

一下是windows程序设计中的一段话,可以通过unicode码范围来判断是否是中文

----------------------------------
您也许会高兴地知道前128个Unicode字元(16位元代码从0x0000到0x007F)就是ASCII字元,而接下来的128个Unicode字元(代码从0x0080到0x00FF)是ISO 8859-1对ASCII的扩展。Unicode中不同部分的字元都同样基於现有的标准。这是为了便於转换。希腊字母表使用从0x0370到0x03FF的代码,斯拉夫语使用从0x0400到0x04FF的代码,美国使用从0x0530到0x058F的代码,希伯来语使用从0x0590到0x05FF的代码。中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码。
----------------------------------

[解决办法]
是html unicode 编码, 就是Unicode编码用十进制表示, 前面再加上&#.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
wchar_t *ws = L "用户列表 ";
WORD *pw = (WORD *)ws;
for (int i = 0; i < 4; i++)
{
ShowMessage( "&# "+IntToStr(pw[i]));
}
}

[解决办法]
补充2.
中文字符用2个字节表示,第一个字节大于127就是中文。
[解决办法]
所以字符串循环一下,判断每个字节,如果是> 127那么跟后面的一个直接一起是一个中文,自己代替。然后i+=2;继续判断
[解决办法]
1、是unicode 大端字节序的编码10进制表示

例:“用”大端字节序的Unicode编码0x7528,换算成10进制为29992,小端的为0x2875

2、用cczlp(不惑)的方法很不错

顺便请教下cczlp(不惑),wchar_t *ws = L "用户列表 ";这个是什么用法,如果想要得到小端的字节序呢
[解决办法]
1.
是html unicode 编码, 就是Unicode编码用十进制表示, 前面再加上&#.
2.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String name = "N我的 ";
WideString pp = name;
ShowMessage(pp.Length());
wchar_t wch;
String result = " ";
for(int i = 1; i <= pp.Length(); i++)
{
wch = pp.operator [](i);
result += "&# ";
result += IntToStr(wch);
result += "; ";
}
ShowMessage(result);
}

热点排行