【发布时间】:2015-07-16 02:52:30
【问题描述】:
我在套接字上接收来自第三方的需要用希伯来语编码的数据(文本)。第三方说:
对于希伯来字母编码,每当您发现大于 127 的 ASCII 码时,您需要减去 128 并添加
#05D0以获得希伯来字母的 Unicode 值(对于希伯来字段中的每个字符)。
我的问题是,如何逐字符读取数据?从第三方接收的文本中可能包含多字节字符。我尝试通过以下方式读取数据并获取 ASCII 码。
Recv(iSocket,AppMsg,&iLen,0)
int a = 0;
for(int i=0;i<strlen(AppMsg);i++)
{
a = (int)pTitlOfAnncmnt->sTitleOfAnncmnt[i];
Log.info("%s|%s|%d|Ascii Value Of Char Is [%d] ",basename(__FILE__),__func__,__LINE__,a);
}
问题是,我通过逐个字符读取错误的 ASCII 值。这是错误的方法。我应该如何读取数据才能获得希伯来语数据?
【问题讨论】:
-
告诉您的客户您需要 UTF-8,而不是某些自定义编码。
-
可能的错误。 for 循环应该写成
for(int i=0;i<iLen;i++)
标签: c++ sockets encoding hebrew