LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: waq

让内核中支持Unicode字符显示,意下如何?

[复制链接]
发表于 2005-9-5 22:52:23 | 显示全部楼层
UTF-8 是变长编码
UTF-16 是定长编码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-6 20:59:55 | 显示全部楼层
Post by jhuangjiahua
UTF-8 是变长编码
UTF-16 是定长编码

RFC 2781 - UTF-16, an encoding of ISO 10646
2.1 Encoding UTF-16

   Encoding of a single character from an ISO 10646 character value to
   UTF-16 proceeds as follows. Let U be the character number, no greater
   than 0x10FFFF.

   1) If U < 0x10000, encode U as a 16-bit unsigned integer and
      terminate.

   2) Let U' = U - 0x10000. Because U is less than or equal to 0x10FFFF,
      U' must be less than or equal to 0xFFFFF. That is, U' can be
      represented in 20 bits.

   3) Initialize two 16-bit unsigned integers, W1 and W2, to 0xD800 and
      0xDC00, respectively. These integers each have 10 bits free to
      encode the character value, for a total of 20 bits.

   4) Assign the 10 high-order bits of the 20-bit U' to the 10 low-order
      bits of W1 and the 10 low-order bits of U' to the 10 low-order
      bits of W2. Terminate.

   Graphically, steps 2 through 4 look like:
   U' = yyyyyyyyyyxxxxxxxxxx
   W1 = 110110yyyyyyyyyy
   W2 = 110111xxxxxxxxxx
回复 支持 反对

使用道具 举报

发表于 2005-9-13 10:19:11 | 显示全部楼层

如果能实现内核console对多字节字符的支持就足够了。

内核的filesystem下面有NLS(Native Language System)模块,其中就有UTF-8的编码,是否能够利用这个模块实现对多字节字符的正确显示?
关于内核的Unicode化,就像windows那样是否真的有必要呢?
回复 支持 反对

使用道具 举报

发表于 2005-9-30 14:41:26 | 显示全部楼层
在内核支持Unicode字符显示没必要,能够在用户层做的还是给用户层做,内核应该值提供必要的功能
回复 支持 反对

使用道具 举报

发表于 2006-12-23 01:54:31 | 显示全部楼层
GNOME2.16已经实现Unicode5版,可以参考一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-24 18:25:20 | 显示全部楼层
Post by hellwolf
内核的filesystem下面有NLS(Native Language System)模块,其中就有UTF-8的编码,是否能够利用这个模块实现对多字节字符的正确显示?
关于内核的Unicode化,就像windows那样是否真的有必要呢?

感觉可以使用来已有的NLS支持来支持所有的本地编码,不仅仅是utf-8。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-24 18:40:52 | 显示全部楼层
Post by Oriel
GNOME2.16已经实现Unicode5版,可以参考一下

实际上在程序中实现支持Unicode并不是有什么大问题,难是难在要在字符模式下实现Unicode,就涉及屏幕位置与字符的转换,也就是说,给你一个屏幕的位置,比如说第10行第11个字符位置,你必需能够得到这个位置的字符是什么。所以,如果屏幕位置与字符的缓冲不是一一对应的,实现起来将会很麻烦。当然如果开很大的缓冲区,每个字符占6个字节,也许可以做到完全支持Unicode,但是这会占更多的空间(比支持BMP0大一倍),而且还不是很必要。再怎么说,Unicode中的合成字符对于字符屏幕显示来说还是比较麻烦,难于真正实现完全支持Unicode的目标。所以,实际一点的作法是只有先实现16位普通字符的支持了。这样至少中日韩文应该没问题了
回复 支持 反对

使用道具 举报

发表于 2007-1-16 18:20:44 | 显示全部楼层
有人再做么,很感兴趣啊
回复 支持 反对

使用道具 举报

发表于 2007-1-29 05:03:39 | 显示全部楼层
在内核支持Unicode字符显示没必要,能够在用户层做的还是给用户层做,内核应该只提供必要的功能
赞成!觉得楼主的思想还是windows的方式,把什么东西都做到内核里。
回复 支持 反对

使用道具 举报

发表于 2007-3-21 10:02:22 | 显示全部楼层
内核支持Unicode字符显示没必要   我也觉得  但是关键是linux本来就不是微内核的 ...
控制台显示 是内核 控制的  ...
不能不让内核支持  除非把控制台从内核中分离 出来~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表