问几个编码问题
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);
}