在线等 java语言判断 ,由于中文和英文所占字节不一致,页面显示中英文所占宽度不一致,如何高效获取字符串所占字节数,来设置内容所在控件高度

yueyuexiong 2014-07-04 03:20:25
在线等 java语言判断 ,由于中文和英文所占字节不一致,页面显示中英文所占宽度不一致,如何高效获取字符串所占字节数,来设置内容所在控件高度。

现在项目涉及到英文,中文,西班牙,俄语,阿拉伯语。。。等多国语言,由于语言不一致,所占字节数不一致,在页面所占的宽度也不一样。所以会导致页面样式出现问题。如何高效判断出一个String 不论语言所占的字节。通过所占字节数来设置,td 换不换行。
看过网上的一些例子,大部分是for 循环一个char 取出来判断,再自加长度变量。有没有好的方法,来实现这个功能。
...全文
652 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯癫行者 2014-07-05
  • 打赏
  • 举报
回复
引用 3 楼 u011201384 的回复:
恩,语言太多,但也就中文,日文,阿拉伯语,和其他的不一致
想到了一个方向:从浏览器上下手,因为实际使用了什么语言、字体、以及页面渲染之后字符的实际宽度只有运行时才知道,假如用js获取宽度,就能用js动态设置控件高度了。
shine333 2014-07-05
  • 打赏
  • 举报
回复
阿拉伯文不好说,一则方向是RTL(右到左),二来,字体会连笔,同一个字符可能因为前后其他字符不一样,而呈现不同的宽度。
shine333 2014-07-05
  • 打赏
  • 举报
回复
Java这里的话,可以根据Font获取FontMetrics,然后可以计算不同字符的宽度,高度,基准线等信息 不过页面的话,很难判断,因为即使你指定了
<span style="font: 16px/30px bold italic Arial">ABC</span>
浏览器仍然可能会自行决定使用其他字体 不过,CSS的话,可以用em做单位,控制宽度,ex做单位控制高度 em单位的含义是,当前字体,显示字母M时候的宽度,对应于中文字体,就是一个字的宽度。ex类似,是X的高度。
yueyuexiong 2014-07-04
  • 打赏
  • 举报
回复
恩,语言太多,但也就中文,日文,阿拉伯语,和其他的不一致
疯癫行者 2014-07-04
  • 打赏
  • 举报
回复
想办法让他自动换行才是正道。
whos2002110 2014-07-04
  • 打赏
  • 举报
回复
用现成的控件吧, 反正我是不喜欢搞这些东西。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧