用C ++编写希伯来语数据

时间:2015-05-06 06:05:51

标签: c++ sockets encoding hebrew

我正在接收来自需要用希伯来语编码的第三方的套接字上的数据(文本)。第三方说:

  

对于希伯来字母编码,每当您发现大于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值。这是错误的做法。我应该如何阅读数据以便能够获得希伯来语数据?

1 个答案:

答案 0 :(得分:3)

  

从第三方收到的文本中可能涉及多字节字符。

如果字符是多字节的,则它们已经是UTF-8,您不需要这种转换。

在任何情况下,您的客户提供的描述都会排除同时使用的任何多字节编码。

  

我尝试使用以下内容读取数据并获取ASCII代码。

     

[char强制转换为int]

char可能(通常是)signed,因此您根本不会看到大于127的值。该演员阵容可能会产生负值。

使用强制转换为unsigned char