用C语言实现中文到unicode码的转换
转自: http://blog.csdn.net/qq_21792169/article/details/50379275
源文件用不同的编码方式编写,会导致执行结果不一样
由于本人喜欢用Notepad++编辑器,该编辑器的好处是小巧灵活,但是有几个地方做的不足,但是我都能够很好的采取相应的措施来替代,下面让我们看看Notepad++有哪些地方的不足,进而采取怎样的措施。
一:Notepad++不能打开16进制文件,UE可以实现;
常用解决:我们常用的Beyond Compare 4(文本比较)可以轻松代替Notepad++不能看16进制的问题。
二Notepad++不能实现对字母,汉字转换成ascii码,uniconde码。用UE可以轻松代替。
常用解决方法:如下面代码所写的,在Linux命令下编译生成可执行文件,然后就可以运行了,就能实现你相应的功能转换,我写这个小工具是为了方便我自己用。
有些朋友就不明白了,既然UE能够那么好的实现功能,你为什么不选择用UE,所以我在这里我得说下,这看个人喜好,我喜欢Notepad++,小巧,界面直观,免费。
unicode中文编码表:请点击这里! 字符编码笔记:ASCII,Unicode和UTF-8:请点击这里!
把中文转换成uniconde码:main.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <wchar.h>
int main()
{
wchar_t *chinese_str = L"网络人VS灰鸽子";
unsigned int *p = (wchar_t *)chinese_str;
int i;
printf("Uniocde: \n");
for (i = 0; i < wcslen(chinese_str); i++)
{
printf("0x%x ", p[i]);
}
printf(" \n");
return 0 ;
}
编译:gcc -finput-charset=GBK -fexec-charset=UTF-8 -o main main.c
上面的编译命令你照做就可以了,如果你不带上面的参数编译会报错,如下:
main.c:8:24: error: converting to execution character set: Invalid or incomplete multibyte or wide character
这是编码的问题,如果你在windos上编写代码保存的格式是GBK,gcc的编码格式默认是UTF-8。
源文件用不同的编码方式编写,会导致执行结果不一样。
man gcc , /charset /*查看gcc的编码格式解析编码和运行编码*/
-finput-charset=charset 表示源文件的编码方式, 默认以UTF-8来解析
-fexec-charset=charset 表示可执行程序里的字时候以什么编码方式来表示,默认是UTF-8
./main
Uniocde:
0x7f51 0x7edc 0x4eba 0x56 0x53 0x7070 0x9e3d 0x5b50
!!!!上面编码可以测试。在PC机上打开一个记事本然后把程序写上去,另存为不同的格式。可以自行尝试。自行测试后更能够加深你的理解。
实现对字符和ascii码之间的转换(写的不是很精简)
/* gets example */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void print_usage(char *file)
{
/* gets example */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void print_usage(char *file)
{
printf("%s c/a\n",file);
}
int main(int argc,char **argv)
{
char str;
int cnt;
if(argc!=2)
{
print_usage(argv[0]);
return -1;
}
if(strcmp(argv[1],"c")==0)
{
printf ("Insert your ascail: ");
scanf("%x",&cnt);
printf ("Your Ascail is: %d 0x%x '%c'\n",cnt,cnt,cnt);
}
if(strcmp(argv[1],"a")==0)
{
printf ("Insert your char: ");
scanf("%c",&str);
printf ("Your Ascail is: %d 0x%x '%c'\n",str,str,str);
}
return 0;
}
编译: gcc main.c -o main
用C语言实现中文到unicode码的转换的更多相关文章
- 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)
Unicode与UTF-8互转(C语言实现):http://blog.csdn.net/tge7618291/article/details/7599902 汉字 Unicode 编码范围:http: ...
- pythonl输出的预警消息中的json串的中文展示乱码(中文的unicode码)
来源:ctrip接口名称:ReviewStandartAPI错误信息:[{'ReviewTime': u'\u63a5\u53e3\u8fd4\u56de\u7684\u70b9\u8bc4\u65f ...
- python3进行汉字和unicode码的转换
输出某个unicode码对应的汉字和某个汉字对应的unicode编码. # -*- coding=UTF-8 -*- str1 = "\u6000"#某个汉字的unicode码 s ...
- python 网页中文显示Unicode码
print repr(a).decode("unicode–escape") 注:a是要输出的结果,
- golang实现unicode码和中文之间的转换
将中文转换为unicode码,使用golang中的strconv包中的QuoteToASCII直接进行转换,将unicode码转换为中文就比较麻烦一点,先对unicode编码按\u进行分割,然后使用s ...
- ASCII码、Unicode码 转中文
ASCII码.Unicode码 转中文 在最近工作中遇到了一些汉字编码转换的处理,可以通过正则表达式及转换字符来实现转成中文 Unicode转换示例 通常为10位编码, 通过digit参数传入 pri ...
- 通过http.client解析url返回的数据时为什么中文变成了unicode码
今天在解析json数据的时候得到了一堆这样的数据:{"errNum":0,"errMsg":"success","retData& ...
- java程序实现Unicode码和中文互相转换
根据前一篇的补充问题http://blog.csdn.net/fancylovejava/article/details/10142391 有了前一篇文章的了解,大概了解了unicode编码格式了 ...
- 【python2/3坑】从gensim的Word2Vec.load()的中文vector模型输出时显示unicode码
服务器上python2.7 打印出的e[0]对应的是 unicode码 于是分别尝试了用e[0].encode('utf-8')转码 和 e[0].decode('unicode-escape')依然 ...
随机推荐
- docker centos yum 源
aliyun yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep ...
- 去掉标题栏/ActionBar后点击menu键时应用崩溃
MainActivity 继承了 ActionBarActivity后,想要去掉标题栏(ActionBar),在程序中加上requestWindowFeature(Window.FEATURE_NO_ ...
- 关于align-items和align-content的区别和使用场景
最近在研究flex布局,容器中有两个属性,是用来定义crossAxis测轴排列方式的.一开始接触align-items还可以理解感觉不难,后来看到align-content就感觉有点混淆了,特开一篇博 ...
- C语言程序设计50例(经典收藏)之1
题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #includ ...
- Lean In - 读书笔记
以下就是摘录了这本书中的相关内容. 他告诉我,想要“赢得每个人的喜欢”这种想法会阻碍我的发展.他说,当你想要让事情有所改变时,你不可能取悦每个人:而如果你去取悦每个人,你就不会获得充分的进步.扎克伯格 ...
- Stream computing
stream data 从广义上说,所有大数据的生成均可以看作是一连串发生的离散事件.这些离散的事件以时间轴为维度进行观看就形成了一条条事件流/数据流.不同于传统的离线数据,流数据是指由数千个数据源持 ...
- JS实现下拉列表的二级联动
这个是简单也是最基本的下拉框联动的示例,这个示例主要针对那些只有二级联动,且第一级是固定的选项,第二级的内容也比较简单,不刷新的联动,动态的联动需要检索数据库,这个对不需要更新的二级联动比较实用.这里 ...
- c的详细学习(6)函数
根据模块化程序设计的原则,一个较大的程序一般要分为若干个小模块,每个模块实现一个比较简单的功能.在c语言中,函数是一个基本的程序模块. (1)函数的基本概念: 1)基本介绍: 任何一个 ...
- Data Structure Binary Tree: Convert a given Binary Tree to Doubly Linked List
http://www.geeksforgeeks.org/in-place-convert-a-given-binary-tree-to-doubly-linked-list/ #include &l ...
- nodejs模块之http&&url
我们使用nodejs中的http模块来进行网络操作 一.什么是HTTP协议: 超文本传输协议(HyperText Transfer Protocol)HTTP假定其下层协议提供可靠传输. 因此,任何能 ...