汉字转unicode?在线unicode编码转换
c语言怎么把UTF-8转换成Unicode
下面程序给出的是UTF-8转成Unicode(UCS-2)的函数:
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#include<string.h>
int utf8_to_unicode(char* pInput, char** ppOutput)
{
int outputSize= 0;//记录转换后的Unicode字符串的字节数
*ppOutput=(char*)malloc(strlen(pInput)* 2);//为输出字符串分配足够大的内存空
memset(*ppOutput, 0, strlen(pInput)* 2);
char*tmp=*ppOutput;//临时变量,用于遍历输出字符串
while(*pInput)
{
if(*pInput> 0x00&&*pInput<= 0x7F)//处理单字节UTF8字符(英文字母、数字)
{
*tmp=*pInput;
tmp++;
*tmp= 0;//小端法表示,在高地址填补0
}
else if(((*pInput)& 0xE0)== 0xC0)//处理双字节UTF8字符
{
char high=*pInput;
pInput++;
char low=*pInput;
if((low& 0xC0)!= 0x80)//检查是否为合法的UTF8字符表示
{
return-1;//如果不是则报错
}
*tmp=(high<< 6)+(low& 0x3F);
tmp++;
*tmp=(high>> 2)& 0x07;
}
else if(((*pInput)& 0xF0)== 0xE0)//处理三字节UTF8字符
{
char high=*pInput;
pInput++;
char middle=*pInput;
pInput++;
char low=*pInput;
if(((middle& 0xC0)!= 0x80)||((low& 0xC0)!= 0x80))
{
return-1;
}
*tmp=(middle<< 6)+(low& 0x7F);
tmp++;
*tmp=(high<< 4)+((middle>> 2)& 0x0F);
}
else//对于其他字节数的UTF8字符不进行处理
{
return-1;
}
pInput++;
tmp++;
outputSize+= 2;
}
*tmp= 0;
tmp++;
*tmp= 0;
return outputSize;
}
扩展资料
UTF-8:互联网的普及,强烈要求出现一种统一的编码方式。 UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~6个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则:
UTF-8的编码规则很简单,只有两条:
1、对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2、对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
unicode字符串如何转换成中文汉字
可以通过Unicode编码转换工具转化成中文汉字。
1,百度搜索输入字段:unicode,点击百度,如下所示。
2.点击第一个搜索结果进入网站的Unicode编码转换-网站管理员工具,如下图所示。
3.打开网页后,将转换后的字符串\u8BF7\u9009\u62E9粘贴到左侧输入框中,如下图所示。
4.点击“Unicodetoanswer”按钮,右侧输入框中的Unicode字符串将被转换为中文字符,就解决了字符串转为汉字的问题了。
unicode是怎么转换成汉字的
这里以txt文件中的汉字为例,介绍文本编辑器如何显示汉字的过程:
1.二进制(文件,你可以把一个文件理解为一串1+0构成的内容.也可以叫落地码编码的内容)——
2.通过落地码识别出每个字符(落地码,就是utf-8/utf-16/gbk这一类编码,它们能够将连续的1/0组成的数字串切割(解码过程)成能n个小块(块的长度不一定相同!),每块表示一个字符(一个汉字).而如何切割,就是这一类编码的意义所在,具体参考每个编码定义)——
3.每个小块转成对应的unicode值(unicode也是一种码,他是用来区分字符和字符之间的唯一性.即每一个不同的字符的unicode都是不同的.它一般有固定的长度.从落地码转成unicode码,有固定的对应关系,具体参考落地码的编码规范)——
4.每个unicode值映射到字体库中对应的文字图案()——
5.读取并显示含有文字的图片
注:
从2开始,每取下一个块,就可以立即执行345,或者取特定个之后再一起执行345.
英文也可以参照这个过程,只是比中文更加简单,比如2的时候,每一个英文字符的块长都是一样的.
一个文件只能有一种落地码,并且编辑器需要知道这个落地码是哪一个码.如果不匹配,就会看到所谓的乱码.也不是说一定只能一种码…除非你知道你在搞什么..
落地码无处不在.比如windows系统的默认编码,这个会影响你的粘帖板.有时候粘帖板中也会包含字体信息.
特别要注意的是, unicode其实也算是一种落地码,只是现在一般用的不多.当作为落地码时,格式有ucs-2/ucs-4这两种.比如windows记事本保存的时候有unicode选项,它默认是ucs-2.
如果有错误的地方忘指出,谢谢!
附上两个工具:
unicode查询-网页链接
utf8转二进制等-网页链接
VB中如何将汉字转换为Unicode代码
回答补充:用Chr()函数把ascii码转化成汉字
用ChrW()函数把Unicode码转化成汉字
(还有之前说的
AscW()函数返回值为负的时候,应加上65536才得到汉字实际的Unicode码)
—————————————————————————————-
求汉字的Unicode代码用AscW()函数
AscW(“汉”)=27721
求汉字的ASCII码用Asc()函数返回一个负数值
如Asc(“汉”)=-17734
PS:PS:改进了下可转化多个汉字
在窗体上建三个text控件,
功能:text1中按个输入汉字后 text2中按个显示汉字的Unicode代码 text3中显示汉字的ASCII码
原代码如下:
Private Function change(s As String) As String
change= AscW(s)
If change< 0 Then
change= change+ 65536
End If
End Function
Private Function change2(s As String) As String
change2= Asc(s)
End Function
Private Sub Text1_Change()
For i= 1 To Len(Text1.Text)
s= s& change(Mid(Text1.Text, i, 1))&””
Next
Text2.Text= s
s=””
For i= 1 To Len(Text1.Text)
s= s& change2(Mid(Text1.Text, i, 1))&””
Next
Text3.Text= s
End Sub
补充:a的ASCII码是97
Asc函数返回的是字符串首字母的ASCII码(如字符串只一个字符,即返回该字符的ASCII码)
Asc函数
返回一个 Integer,代表字符串中首字母的字符代码。
语法
Asc(string)
必要的 string参数可以是任何有效的字符串表达式。如果 string中没有包含任何字符,则会产生运行时错误。
PSPS: VB里目前我还没找到能将之转换成把汉字转换成西欧文编码的函数不敢断言没有(有估计也很难找我搜了好多关键字都没找到)
还有不只是遨游浏览器,一般的IE浏览器也有此功能
查看——编码——其他——最下面那小三角号——西欧(ISO)
易语言汉字转换成unicode编码10进制
.版本 2
.支持库 ePY
.子程序取汉字区位码,文本型
.参数 _字,文本型,,只取第一个字
.局部变量高字节,整数型
.局部变量低字节,整数型
.局部变量区码,整数型
.局部变量位码,整数型
.如果真(取字符串长度(_字)= 0)
返回(“0”)
.如果真结束
高字节=位与(取代码(_字, 1), 255)
低字节=位与(取代码(_字, 2), 255)
区码=高字节- 160
位码=低字节- 160
返回(到文本(区码× 100+位码))
本文链接:http://www.dike88.com/html/87960156.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。