zoukankan      html  css  js  c++  java
  • 一个汉字=2个英文字符么?我肤浅的这么认为。

    如题包含2个意思:

    1. 通常所说的一个汉字2个字节,一个英文字符1个字节。
    2. 一个汉字的显示宽度等于两个英文字符的显示宽度。

    一.编码问题
    这在正常编码里是这样的,所谓正常编码也就是ANSI,我们用NOTEPAD.EXE打开一个TXT文档,另存为的时候可以看到这个文档的编码格式,这种编码汉字用2个字节,英文字符1个字节,但是这种格式不够通用,最简单的举例比如一个字符串:(ANSI)

    • "ABC",那么"ABC".length()=3
    • "阿BC",那么"阿BC".length()=?

    所以为了解决这个问题,有了unicode编码,所有字符一律用2个字节表示,这样就好办多了,如上例:(Unicode)

    • "ABC",那么"ABC".length()=3
    • "阿BC",那么"阿BC".length()=3

    可是所有的英文字符也都用2个字节表示岂不是太浪费?一个纯英文的文档用unicode保存得大了一倍,所以又有了UTF-8的编码,英文、数字、符号的存储还是1个字节,其他用2个字节,这样就大大的节省存储空间了,还是上例:(UTF-8)

    • "ABC",那么"ABC".length()=3
    • "阿BC",那么"阿BC".length()=3

    所以在各种编程环境中几乎都引入了Unicode,并且用Unicode编码来处理字符以增强通用性。从Java的一次编译到处使用的特性就知道它是使用Unicode来处理字符的。

    关于Unicode的代码,http://www.unicode.org/charts/这个网址有列表,看了以后大有帮助。

    二.显示问题。
    直到昨天我在调试我的JBookMaker时才发现并不是所有的手机显示里面都是,以下列举的是不全面的。

    • 一个汉字宽度 = 两个英文宽度
    • 大写英文宽度 = 小写英文宽度的

    这就知道为什么有的手机用户报告说最右边经常只显示一半,另一半字应该在屏幕外面了。我做了个小小的测试程序放到各手机模拟器里,发现有的手机里面确实是如上所列情况,如西门子,Nokia,有的却不尽然,如摩托罗拉,索爱。拿索爱Z500举例:

    • 系统中字体:一个汉字:11,一个大写英文:8,小写英文:6
    • 系统中字体:一个汉字:14,一个大写英文:9,小写英文:8
    • 系统小字体:一个汉字:9,一个大写英文:6,小写英文:5

    所以编程时不能那么想当然的认为,还是得"实践出真知"啊。


    - 作者: Bigwater 2004年11月18日, 星期四 13:35 加入博采



  • 相关阅读:
    UML 结构图之类图 总结
    UML 结构图之包图 总结
    UML 行为图之用例图 总结
    一位36岁程序员的困惑(转)
    某程序员转行前的感慨 告别程序员生涯
    PHP有前途吗?
    使用d3制作上下结构的股权穿透图
    elementUI实现动态拖拽表头、可拖拽列
    使用iview框架,如何进行输入框或者按钮的关联验证
    iview的Modal组件点击确定按钮如何阻止弹窗的关闭
  • 原文地址:https://www.cnblogs.com/kevinzhwl/p/3878916.html
Copyright © 2011-2022 走看看