3

我想得到 Shift-jis 和 Utf-8 的 strlen(),然后比较它们。字符串可以混合“ああ12345678sdfdszzz”。我尝试使用 strlen 但它会产生不同的结果。mb_strlen 也无济于事,因为这是一个混合字符串。

例如:

ああ12345678 >> strlen() = 24 chars
ああああああああああああああああ >> strlen() = 48 chars
ああああああああああああああああああ >> strlen() = 54 chars

好像没有什么规律。那么计算 strlen 并在多语言中比较它们的最佳方法是什么

4

3 回答 3

6

strlen只计算字节数,因此仅对单字节字符编码有用;用于可以计算实际字符mb_strlen多字节字符编码。

于 2012-02-13T07:03:42.347 回答
2

我会编写一个函数来检查特定编码存在的位置。

然后我会将字符串拆分为编码,执行 mb_strlen 并总结大小后缀。然后在第二个字符串上重复并进行比较。

我想你明白我的意思;)

PS:使用mb_detect_encoding检测编码

mb_detect_encoding(请参阅评论以获取 php 社区的更多想法)

于 2012-02-13T07:13:36.053 回答
0
$field = $_POST['field'];
$field_length = mb_strlen($field,'utf-8');
于 2014-11-15T14:55:51.257 回答