如何对unicode字符使用length()?

时间:2013-03-29 19:24:25

标签: unicode moovweb tritium

在Moovweb SDK中工作时,length("çãêá")应返回4,而是返回8.当使用Unicode字符时,如何确保length函数正常工作?< / p>

2 个答案:

答案 0 :(得分:3)

这是Unicode字符和使用错误字符集的length()函数的常见问题。要修复它,您需要设置charset_determined变量以确保在调用length()之前使用了正确的字符集,如氚代码中所示:

$charset_determined = "utf-8"
# your call to length() here

答案 1 :(得分:2)

在Unicode中,没有字符串的长度或&#34;字符数&#34;。所有这些都来自ASCII思考。

根据您的具体需要,您可以选择以下其中一项:

  • 对于光标移动,文本选择等,应使用字形簇。

  • 为了限制输入字段,文件格式,协议或数据库中字符串的长度,以某些预定编码的代码单位测量长度。原因是任何长度限制都是从为较低级别的字符串分配的固定内存量派生的,无论是在内存,磁盘还是在特定的数据结构中。

屏幕上显示的字符串大小与字符串中的代码点数无关。为此,必须与渲染引擎进行通信。即使在等宽字体和终端中,代码点也不占用一列。 POSIX考虑到了这一点。

http://utf8everywhere.org

中有更多信息