重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

php提取文本数据乱码,php中文字符串截取无乱码

请问下php怎么处理截取字符串出现的乱码问题

利用php内置方法mb_substr截取不乱码;

成都创新互联公司主要从事网站制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务浦口,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

1、GBK编码截取示例:

$str

=

'我是谁';

//gbk编码的字符串

echo

mb_substr($str,

0,

1,

'gbk');

//输出

mb_substr方法比substr多一个参数,用来指定字符串编码。

2、utf-8编码截取示例:

[code]

$str

=

'我abc是谁';

//utf-8编码的字符串

echo

mb_substr($str,

0,

2,

'utf-8');

//输出

我a

[/code]

中英混合也完全没有问题。

php读文本文件读出来的内容是乱码怎么办?

看看你PHP文件是什么编码,然后用记事本打你的PHP文件,另存为

选择编码类型覆盖。

或者用把读出来的字符串转码。

php读取txt文本输出时乱码如何解决

$text = file_get_contents($filePath);

//$encodType = mb_detect_encoding($text);

define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));

define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));

define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));

define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));

define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));

$first2 = substr($text, 0, 2);

$first3 = substr($text, 0, 3);

$first4 = substr($text, 0, 3);

$encodType = "";

if ($first3 == UTF8_BOM)

$encodType = 'UTF-8 BOM';

else if ($first4 == UTF32_BIG_ENDIAN_BOM)

$encodType = 'UTF-32BE';

else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)

$encodType = 'UTF-32LE';

else if ($first2 == UTF16_BIG_ENDIAN_BOM)

$encodType = 'UTF-16BE';

else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)

$encodType = 'UTF-16LE';

//下面的判断主要还是判断ANSI编码的·

if ($encodType == '') {//即默认创建的txt文本-ANSI编码的

$content = iconv("GBK", "UTF-8", $text);

} else if ($encodType == 'UTF-8 BOM') {//本来就是UTF-8不用转换

$content = $text;

} else {//其他的格式都转化为UTF-8就可以了

$content = iconv($encodType, "UTF-8", $text);

}

PHP读取文件乱码问题

1.fgetc($fp) 取得是单字节的,中文可能的根据编码可能有2 3 4字节,所以不管怎么输出肯定都会是乱码。

解决方法

1.修改php文件的编码为utf-8, 只有这样保存到test.txt文件里的文件才会是utf-8 大部分中文就都是按照3个字节

2.$fp=fopen($filename,"r");

while(($char=fread($fp,3))!==''){

printf("%d.%s",ftell($fp)/3,$char);

}


新闻标题:php提取文本数据乱码,php中文字符串截取无乱码
分享网址:http://cqcxhl.com/article/hohpjc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP