读书人

为啥一个中文和两个英文字母的宽度不一

发布时间: 2011-12-22 23:36:25 作者: rapoo

为什么一个中文和两个英文字母的宽度不一样呢?
调了一下午,也没弄明白,标题始终截取不整齐,有这做过这方面的大侠没,指点一二。

[解决办法]
宽带是由字体决定的
[解决办法]
跟字体格式有关系
[解决办法]

Java code
public static String bSubstring(String s, int length) throws Exception {          byte[] bytes = s.getBytes("Unicode");          int n = 0; // 表示当前的字节数          int i = 2; // 要截取的字节数,从第3个字节开始          for (; i < bytes.length && n < length; i++) {              // 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节              if (i % 2 == 1) {                  n++; // 在UCS2第二个字节时n加1              }              else {                  // 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节                  if (bytes[i] != 0) {                      n++;                  }              }          }          // 如果i为奇数时,处理成偶数          if (i % 2 == 1) {              // 该UCS2字符是汉字时,去掉这个截一半的汉字              if (bytes[i - 1] != 0)                  i = i - 1;              // 该UCS2字符是字母或数字,则保留该字符              else                 i = i + 1;          }          return new String(bytes, 0, i, "Unicode");      }      public static void main(String[] args){        String s = "a加b等于c,如果a等1、b等于2,那么c等3";                  try {            System.out.println(bSubstring(s,2));        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }     } 

读书人网 >Java Web开发

热点推荐