社区
C语言
帖子详情
汉字按unicode方式排序问题
ericpowerful
2011-10-02 10:51:27
如何按照 Unicode 编码从小到大的顺序排列汉字呀?应该如何比较呀。求高人!
...全文
403
6
打赏
收藏
汉字按unicode方式排序问题
如何按照 Unicode 编码从小到大的顺序排列汉字呀?应该如何比较呀。求高人!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Linux-Torvalds
2011-10-02
打赏
举报
回复
[Quote=引用 1 楼 ericpowerful 的回复:]
帮下忙呀!不胜感激!
[/Quote]http://www.cprogramming.com/tutorial/unicode.html
ericpowerful
2011-10-02
打赏
举报
回复
帮下忙呀!不胜感激!
辰岡墨竹
2011-10-02
打赏
举报
回复
那的看是什么编码的Unicode了。如果是Windows默认的UTF-16L的话,普通汉字可以直接这样
&((short *)a[0])
这样把a[0]的地址当作short指针取值。因为UTF-16L的内存顺序和Intel的小端短整型是一样的。
但是注意这样只能处理BMP基本映射平面上的字符。因为Unicode编码是32位的,所以额外的字符需要两个16位的值组成一个代理对表示。
代理对是一对 16 位值,用来表示 [0x010000..0x10FFFF] 范围
中的字符。该代理对的前半部分位于 [0xD800..0xDBFF] 范围中,后半部分位于 [0xDC00..0xDFFF] 范围中。这样的值对 (H, L) 表示按以下方式计算的字符 (十六进制算术运算):
(H - 0xD800) * 400 + (L – 0xDC00)
所以你还要判断a[0]和a[1]的值是否符合上述范围,如果符合的话,需要按这个公式计算unicode编码值而不是直接用指针读取了。
我以前写Java大作业的时候写过类似的。
虽然说应该处理代理对,不过基本上常见的汉字都落在BMP里,所以可以直接用一个16位整数表示。
我排序的方式是用一个list,直接按值插入对应位置,最后按顺序遍历就可以了,C里的话可以用STL里的list。如果用65536的int数组也可以,只不过比较浪费内存。
ericpowerful
2011-10-02
打赏
举报
回复
大虾们帮忙呀
ericpowerful
2011-10-02
打赏
举报
回复
我现在是把一个汉字拆成了字符数组中的两个值,这样的话如何比较呀?相当于a[0],a[1]组成一个汉字,a[3]、a[4]组成一个汉字,a[0],a[1]组成的汉字与a[2],a[3]组成的汉字如何比较。谢谢了!
5t4rk
2011-10-02
打赏
举报
回复
[Quote=引用 2 楼 linwhwylb 的回复:]
引用 1 楼 ericpowerful 的回复:
帮下忙呀!不胜感激!
http://www.cprogramming.com/tutorial/unicode.html
[/Quote]
这个方法貌似可行
汉字
Unicode
根据拼音
排序
表
汉字
unicode
, 这种格式的,
汉字
表是在http://xh.5156edu.com/conversion.html这个页面里面找的zmj.php.js这个文件获取的。
汉字
与
unicode
编码(十六进制)对照表
汉字
一、二级字库的
汉字
与
unicode
编码(十六进制)对照表,按照
unicode
的顺序排列
c++ 五笔
Unicode
词库
排序
将极点五笔的五笔词库导出为txt文件,在文件尾添加用户词组, 之后用我发的这个小程序将这个文件重
排序
,再导入到极点五笔词库就好。 其实这个也没有太大的用,只是我个人在看C++ Primer,用了vector的一点知识,练习一下。
汉字
拼音对应的
unicode
编码
汉字
转换成16进制对应的
unicode
编码,用于
汉字
拼音
排序
Java 中文字符按
Unicode
排序
的实现方法
主要介绍了Java 中文字符按
Unicode
排序
的实现方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
C语言
69,370
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章