java - 为什么 java String.length 给出与相同字符串的 python len() 不同的结果

标签 java python string

我有一个像下面这样的字符串

(““اسارنفار”或“ال”或“”或“羔”或“”或“羔”或“”或“呢”或“”或“呢”或“呢”或“呢”或“”或“?إ”或“”或“”或“OR "فالأستنفار"OR "والاستنفار"OR "بالاستنفار"OR "فالاستنفار"OR "والإستنفار"OR "بالإستنفار"OR "للإستنفار"OR "فالإستنفار"OR "إستنفار"OR "أستنفار"OR "إلأستنفار"OR "ألأستنفار"OR "إلاستنفار"OR "ألاستنفار"OR "إلإستنفار"OR "ألإستنفار") (("قوات سعودية"OR "قوات سعوديه"OR "القوات سعودية"OR "القوات سعوديه") OR ("القواتالسعودية"OR "القواتالسعوديه"OR "إلقواتالسعودية"OR "ألقواتالسعودية"OR "إلقواتالسعوديه"OR "ألقواتالسعوديه")("القوات السعودية"OR "إلقوات السعودية"OR "ألقوات السعودية"OR "والقوات السعودية"OR "بالقوات السعودية"OR "للقوات السعودية"OR "فالقوات السعودية"OR "وإلقوات السعودية"OR "بإلقوات السعودية"OR "لإلقوات السعودية"OR "فإلقوات السعودية"OR "وألقوات السعودية"OR "بألقوات السعودية"OR "لألقوات السعودية"OR "فألقوات السعودية") OR )

如果我使用 java 字符串变量并计算字符数,它会给出 923,但如果我使用 python 的 len 函数,它会给出 1514

这里有什么区别?

最佳答案

看起来,在 python (2.x) 中,您计算​​的是字节长度,而不是字符数。

使用str.decode将字节串转换成unicode对象,然后统计字符数:

len(byte_string_object.decode('utf-8'))

您可能还需要去除环绕空间:

len(byte_string_object.decode('utf-8').strip())

>>> len('استنفار')  # string (byte-string) literal
14
>>> len(u'استنفار')  # unicode literal
7
>>> len('استنفار'.decode('utf-8'))  # string -> unicode
7

关于java - 为什么 java String.length 给出与相同字符串的 python len() 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28524215/

相关文章:

android - String[] Array 通过Intent 到另一个Activity(Main activity extends fragment class)

c# - 筛选列表数据 C#

java - Hazelcast 实例未激活!在 3.2.1

java - 为什么对 UUID.randomUUID() 的初始调用很慢?

python - 我已经使用 ubuntu 14.04 为 python PyQt4 应用程序创建了一个 docker 镜像,现在当我运行容器时,我想要访问 docker 主机 IP 和接口(interface)

python - 使用子图时 Matplotlib 不会显示小刻度

java - 如何创建一个循环将堆栈放入 string[] 中?

java - 如何更改菜单项的文本大小?

java - 过滤自动完成适配器的 json 结果

jquery - 如何从 Jquery 读取 python 字典?