8b05045a5be5764f313ed5b9168a17e6
93f0f5c25f18dab9d176bd4f6de5d30e
9c3bca370b5104690d9ef395f2c5f8d1 ;body>
86df25a039d020c9633937d93bcff2da
echo mb_strlen("star",'utf-8'); 出力は 1 です
echo mb_strlen("星",'gbk');
出力は 2 EUC-CN です
echo strlen("star");
utf-8 で 3 を出力する方法 gbk で 2 を出力する
ファイルを utf-8 で utf-8 エンコードとして保存します。 ANSI 形式で gbk の下に保存します。
echo strlen("star");
私の場合は utf-8 であっても gbk であっても出力 3 です
3a975e20c7948da0aedb370dcf5932a4
質問させてくださいこのソフトウェアの名前は何ですか? 私もダウンロードしたいです
以前のコードはすべて Visual Studio 2013 で書かれていたのですが、サフィックス名を php に変更すると、奇妙な問題が頻繁に発生しました
最後の小さな質問です
echo mb_strlen("星",'gbk');utf-8 次の出力 2
ansi 次の出力 1
echo mb_strlen("star",'utf-8');
utf-8 次の出力 1
ansi 次の出力1
不可以!
e6f50788e4d11d41f37c7f7fc8a5273e
只是通知浏览器用 charset 指定的字符集解释内容
如果你的程序文件是 utf-8 的,那么声明 charset=gbk 只会导致乱码
而没有 e6f50788e4d11d41f37c7f7fc8a5273e 反而会因浏览器的自动识别功能,不出现乱码
设置文件的编码和声明charset是不同的,如果需要设置文件编码,一般的软件就可以解决,如notepad++
echo mb_strlen("星",'gbk');
utf-8 下 输出 2
ansi 下 输出 1
echo mb_strlen("星",'utf-8');
utf-8 下 输出 1
ansi 下 输出 1
这个是怎么一回事??
e6f50788e4d11d41f37c7f7fc8a5273e
?於mb_strlen 可以看看?? http://developer.51cto.com/art/201105/263103.htm
可以这样理解。
echo mb_strlen("星",'gbk');
utf-8 下 输出 2 // 一个中文在utf-8下占三个字节,在gbk下占两个字节, 以gbk算的话,就是3/2 = 1.5个字符,半个字符也算一个,所以输出2
ansi 下 输出 1
echo mb_strlen("星",'utf-8');
utf-8 下 输出 1
ansi 下 输出 1 // 这里就是2/3 小于1,也是按1算。
所以用mb_strlen 检测字符串包含的字符数时,编码统一就不会有问题了。
谢谢大家,我懂了
echo mb_strlen("星",'gbk');
utf-8 下 输出 2
ansi 下 输出 1
echo mb_strlen("星",'utf-8');
utf-8 下 输出 1
ansi 下 输出 1
这个是怎么一回事??
$s = '星';$charset = mb_detect_encoding($s, 'utf-8, gbk');echo mb_strlen($s, $charset);
$charset = mb_check_encoding($s, 'utf-8') ? 'utf-8' : 'gbk';echo mb_strlen($s, $charset);