C++ 用C+编码希伯来语数据+;
我从第三方接收套接字上的数据(文本),需要用希伯来语编码。第三方表示: 对于希伯来字母编码,每当您发现ASCII码大于127时,您需要减去128并添加C++ 用C+编码希伯来语数据+;,c++,sockets,encoding,hebrew,C++,Sockets,Encoding,Hebrew,我从第三方接收套接字上的数据(文本),需要用希伯来语编码。第三方表示: 对于希伯来字母编码,每当您发现ASCII码大于127时,您需要减去128并添加05D0,以获得希伯来字母的Unicode值(对于希伯来字段中的每个字符) 我的问题是,如何逐字符读取数据?从第三方接收的文本中可能包含多字节字符。我试着用下面的代码读取数据并得到ASCII码 Recv(iSocket,AppMsg,&iLen,0) int a = 0; for(int i=0;i<strlen(AppMsg);i+
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);
}
Recv(iSocket、AppMsg和iLen,0)
int a=0;
for(int i=0;istitleofancnt[i];
Log.info(“%s |%s |%d |字符的Ascii值为[%d]”,basename(_文件,_函数,_行,a);
}
问题是,我从逐字符读取中得到了错误的ASCII值。这是错误的方法。我应该如何读取数据以便能够获得希伯来文数据
从第三方接收的文本中可能包含多字节字符
如果字符是多字节的,那么它们就已经是UTF-8了,您不需要这种转换
在任何情况下,客户给出的描述都不允许同时使用任何多字节编码
我试着用下面的代码读取数据并得到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);
}
[将char
转换为int
]
char
可能(而且通常是)有符号的
,因此您根本看不到大于127的值。该转换可能会产生负值
改为使用转换来
无符号字符。告诉您的客户您需要UTF-8,而不是一些自定义编码。可能的错误。for循环应写成for(int i=0;i