各位大侠: 在linux下如何用C实现汉字转unicode码。比如:“中国”转成“5E5D 66EF”,在线等~~

2024-12-18 13:02:01
推荐回答(2个)
回答1:

/* Copyright (C) 2010 by Xingyou Chen
*
* Test OS is Debian squeese AMD64 , source file stored in UTF-8
* If another encoding is used, this program may fail
*/
#include /* printf() from here */

int main()
{
int i = 0; /* for loop */
char orig[6] = "中国"; /* demo text, Chinese char is 3 byte long */
unsigned short dest[2]; /* two 2-byte variable */
for(i = 0; i < 2; i++)
{ /* Don't understand? See UTF-8 and Unicode encoding */
dest[i] = (orig[3*i] & 0x1F) << 12;
dest[i] |= (orig[3*i + 1] & 0x3F) << 6;
dest[i] |= (orig[3*i + 2] & 0x3F);
printf("%x", dest[i]);
}
printf("\n");
return 0;
}
====================================================
“中国”: UTF-8 e4b8ad e59bbd Unicode 4e2d 56fd
你给出的那个编码该是不正确的。这里只做了UTF-8到UCS-2的转换,
中文编码不少,没功夫全写出来(也写不全),UTF-8是我平时用的。

在开源环境中,这个根本不是问题,可以参考zh-autoconvert的源代码:
http://ftp.de.debian.org/debian/pool/main/z/zh-autoconvert/zh-autoconvert_0.3.16.orig.tar.gz
它提供了多种中文编码间相互转换的C语言代码,找你需要的吧。

回答2:

汉字具有以下三个特点:
(1)汉字符号繁多,以语素定型,孤立性强;
(2)汉字是音义二维的文字,与语义的联系具有特定性,与语音的联系不具有特定性;
(3)汉字构形有理据,可以进行结构分析。