不知道为什么 PHP 中 mb_strlen('金马','gbk') = 3

2015-11-19 14:04:02 +08:00
 lijinma

大神我给解释下:

现在不明白:

mb_strlen('金','gbk') = 2
mb_strlen('金马','gbk') = 3
2425 次点击
所在节点    程序员
14 条回复
surfire91
2015-11-19 14:15:36 +08:00
一个返回的字节长度,一个返回的是字符长度。
不同编码的字符长度算法不同。
skydiver
2015-11-19 14:17:09 +08:00
这是个网页吧,网页是用的 utf8 吧?
把 utf8 的字符用 gbk 去数字符个数当然不准
msxcms
2015-11-19 14:22:50 +08:00
少年,自己去执行,别用什么 Sandbox
lijinma
2015-11-19 14:27:50 +08:00
@msxcms 试过了



求指导下。。
lijinma
2015-11-19 14:28:58 +08:00
@skydiver 你的回答应该已经解决了我的疑惑,但是我要再想一想。
wshcdr
2015-11-19 14:32:35 +08:00
我这里是
int 4
int 2
int 1
int 2
int 2
msxcms
2015-11-19 14:34:10 +08:00
@lijinma 你要知道有个概念叫文件编码…
wdlth
2015-11-19 14:34:19 +08:00
经过我测试,如果把 PHP 文件用 GBK 编码保存的话,执行结果就是 1 和 2 。用 UTF-8 编码保存,结果就是 2 和 3 。
应该是文件编码的问题
aisk
2015-11-19 14:34:44 +08:00
不懂 PHP ,不过这个还跟文件的编码方式有关吧。
wdlth
2015-11-19 14:40:21 +08:00
你用 UTF-8 编码去保存时,“金”变成了"閲?",“金马”变成了“閲戦┈”,长度就变了。
lijinma
2015-11-19 14:41:34 +08:00
@msxcms
@wdlth
@aisk

对,多谢啊。。。。学习了。。。
lijinma
2015-11-19 14:42:41 +08:00
@wdlth 是的 - 。- 我用 gbk 来算 utf-8 编码的内容。。。傻了。。
lijinma
2015-11-19 14:43:43 +08:00
@wshcdr 是我们的文件编码不一样。。
longaiwp
2015-11-19 20:35:23 +08:00
@skydiver SD 聚聚正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/237304

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX