echo mb_strlen("星",'gbk');
1
echo strlen("star") の出力は 3 です
はプログラム ファイルが utf-8 エンコーディングで保存されることを意味します UTF-8 エンコードでは、1 つの漢字が 3 バイトを占めます。したがって 3 が返されます
この関数はエンコーディングと大きく関係しています
正しい値を取得するには、正しいエンコーディングを選択する必要があります
utf-8 では、中国語は 3 文字です。
<?php$str = '我';echo strlen($str).PHP_EOL;$encode = mb_detect_encoding($str, array("ASCII","UTF-8","GB2312","GBK","BIG5")); echo $encode;
UTF8 は 3 文字の中国語です
echo strlen("star") 。 ) ; 出力は 1 です
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 です
質問させてくださいこのソフトウェアの名前は何ですか? 私もダウンロードしたいです
以前のコードはすべて Visual Studio 2013 で書かれていたのですが、サフィックス名を php に変更すると、奇妙な問題が頻繁に発生しました
最後の小さな質問です
echo mb_strlen("星",'gbk');utf-8 次の出力 2
ansi 次の出力 1
echo mb_strlen("star",'utf-8');
utf-8 次の出力 1
ansi 次の出力1
不可以!
只是通知浏览器用 charset 指定的字符集解释内容
如果你的程序文件是 utf-8 的,那么声明 charset=gbk 只会导致乱码
而没有 反而会因浏览器的自动识别功能,不出现乱码
设置文件的编码和声明charset是不同的,如果需要设置文件编码,一般的软件就可以解决,如notepad++
echo mb_strlen("星",'gbk');
utf-8 下 输出 2
ansi 下 输出 1
echo mb_strlen("星",'utf-8');
utf-8 下 输出 1
ansi 下 输出 1
这个是怎么一回事??
?於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);