用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')依然 ...
随机推荐
- spark 在yarn执行job时一直抱0.0.0.0:8030错误
近日新写完的spark任务放到yarn上面执行时,在yarn的slave节点中一直看到报错日志:连接不到0.0.0.0:8030 . The logs are as below: 2014-08-11 ...
- ABAP动态生成经典应用之Dynamic SQL Excute 程序
[转自http://blog.csdn.net/mysingle/article/details/678598]开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Ta ...
- c# 文件IO操作 StreamReader StreamWriter Split 使用
StreamWriter(String,Boolean) 若要追加数据到该文件中,则为 true:若要覆盖该文件,则为 false. 如果指定的文件不存在,该参数无效,且构造函数将创建一个新文件. 例 ...
- git错误收集总结
一.在icoed添加ssh密钥后,克隆代码库报错`Permissions 0777 for ‘/Users/username/.ssh/id_rsa’ are too open.` 1.原因:id_r ...
- 【Flask模板】include标签
# include标签:1. 这个标签相当于是直接将指定的模版中的代码复制粘贴到当前位置.2. `include`标签,如果想要使用父模版中的变量,直接用就可以了,不需要使用`with context ...
- mysql 索引技巧
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- 剑指offer之 从尾到头打印链表
package Problem5; import java.util.Stack; //首先定义链表结构class LinkNode{ LinkNode next; int node_value;} ...
- SpringCloud-服务的注册与发现(Eureka)
SpringCloud 简介 SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境简 ...
- 命令行 -- 命令"%cd%"
1. @echo off echo 当前盘符:%~d0 echo 当前盘符和路径:%~dp0 echo 当前批处理全路径:%~f0 echo 当前盘符和路径的短文件名格式:%~sdp0 echo 当前 ...
- JavaScript基础挖掘目录
前端基础进阶(一):内存空间详细图解 前端基础进阶(二):执行上下文详细图解 前端基础进阶(三):变量对象详解 前端基础进阶(四):详细图解作用域链与闭包 前端基础进阶(五):全方位解读this 前端 ...