• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lijinma
V2EX  ›  程序员

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

  •  
  •   lijinma · Nov 19, 2015 · 3132 views
    This topic created in 4003 days ago, the information mentioned may be changed or developed.

    大神我给解释下:

    Alt text

    现在不明白:

    mb_strlen('金','gbk') = 2
    mb_strlen('金马','gbk') = 3
    
    14 replies  •  2015-11-19 20:35:23 +08:00
    surfire91
    surfire91
    Nov 19, 2015
    1
    一个返回的字节长度,一个返回的是字符长度。
    不同编码的字符长度算法不同。
    skydiver
    skydiver
    Nov 19, 2015
    2
    这是个网页吧,网页是用的 utf8 吧?
    把 utf8 的字符用 gbk 去数字符个数当然不准
    msxcms
    msxcms
    Nov 19, 2015
    3
    少年,自己去执行,别用什么 Sandbox
    lijinma
    lijinma
    OP
    Nov 19, 2015
    4
    @msxcms 试过了



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

    对,多谢啊。。。。学习了。。。
    lijinma
    lijinma
    OP
    Nov 19, 2015
    12
    @wdlth 是的 - 。- 我用 gbk 来算 utf-8 编码的内容。。。傻了。。
    lijinma
    lijinma
    OP
    Nov 19, 2015
    13
    @wshcdr 是我们的文件编码不一样。。
    longaiwp
    longaiwp
    Nov 19, 2015
    14
    @skydiver SD 聚聚正解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5125 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 06:39 · PVG 14:39 · LAX 22:39 · JFK 01:39
    ♥ Do have faith in what you're doing.