谁有办法帮我转换一个字符串: UTF-8 ==> GBK 有一个UTF-8字符串:"z7, 赵明"。 用 "," 分割,再分别转换为GBK。在"赵"之前有个英文输入的空格。我先用preg_split("/;+/u",$arrNames,-1, PREG_SPLIT_NO_EMPTY)分割,前半部分没有问题,后半部分我先trim(),再转换mb_convert_encoding($string, 'GBK', 'UTF-8'),出来的总是乱码。比较急,比较难,困扰我半天了谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果没有逗号及前面的部分,可以正常转换,但是这种情况下,trim()后如果再用preg_replace("/s+/u","",$str)处理一次,然后再转换,出来的友是乱码。看起来,似乎是 trim()或者preg_replace()处理的空格字节不干净,或者添加了字节。调试的时候又不可见 // 为啥不先转编码再分割恩?很奇怪$str = 'z7, 赵明';$str = iconv("UTF-8", "GBK//IGNORE", $str);var_dump( $str );$str = explode(',', $str);var_dump( $str ); 1、z7, 赵明存为UTF8文件中2、新建一ANSI的php文件,内容如下header ("Content-type: text/html; charset=gbk");var_dump( $str = file_get_contents('文件名') );$str = iconv("UTF-8", "GBK//IGNORE", $str);var_dump( $str );$str = explode(',', $str);var_dump( $str ); 不想要那个空格。另外,那个字符串是用户通过一个UTF-8页面返回给服务器的,不能存到文件里,要先处理。最终的效果是,要分割后的字段是英文,或者中文,并且每个字段两端要去掉空格,如果有的话。 真是奇怪啊,网上能找到的代码都不灵啊?没有办法了吗? IE FF 是咋整的? 楼主pre_split的正则,如果是以,分割的话,不是这么写的吧……$arr=preg_split("/[,\s]+/",$arrNames,-1, PREG_SPLIT_NO_EMPTY);参考下这个,是以,号后加一个空格 来分割。<?php$arrNames="z7, 赵明";$arr=preg_split("/[,\s]+/",$arrNames,-1, PREG_SPLIT_NO_EMPTY);//var_dump($arr);$string=trim($arr[1]);$str=mb_convert_encoding($string, 'GBK', 'UTF-8');echo $str;?>这个可以输出的额……不知道我这样测试对不对,我将文件保存为utf8 和ansi 都能输出不会乱码 规则里加空格也不行啊,不知道怎么回事。 按理分出来的后半部分没有空格了,可是出来还是乱码。我把那个字符串拷到notepad++里,选择ANSI格式可以正常显示,选择UTF-8,就是乱码。难倒不是utf8编码的? 我用的是IE7,返回的应该是utf8啊。 在header里有,charset = utf-8. 不是写meta 的那个header,是http的。 返回form到同一个页面,也是 utf-8的 你不是把utf-8的数据转成gbk然后输出了吗,怎么还header charset=utf-8?应该header("Content-type:text/html;charset=gbk"); 再看了看你的问题,唉,真乱。你只给出的数据串是"z7, 赵明"那么你preg_split("/;+/u",$arrNames,-1, PREG_SPLIT_NO_EMPTY)这个正则分割所为何事?前半部分是那些数据?后半部分是哪些数据? 不好意思啊,因为问题是摘出来的,说的不太清楚。中间一步逗号变分号省略了,所以正则里是分号,在这问的时候应该是"/,+/u",数据串"z7, 赵明"是加了header("Content-type:text/html;charset=utf-8")的页面返回来的,要分割成"z7"和"赵明"两部分。然后转换为GBK不是为了直接用于再次输出,而是要去做汉字转换为拼音,那里需要的是GBK的汉字,所以先要utf8到GBK的转换。所以也没有charset=gbk的页面。谢谢!再考虑一下。 PHP无法显示变量值 2008-09-07 17:00 怎么取这个时间之后1分钟的时间? 求救啊,mysql数据无缘无故消失,请高手指点原因 帮帮忙,好吗? php header重定向的时候能带参数吗? 如何配置PHP中的GD库 请急请助:哪里有 PHP 版本的在线编辑器可以上传flash? 关于PHP GD库的问题. 在windows下编写的PHP代码能否在linux下使用? thinkphp中图片处理 新手从CSDN里下载了一个文件上传类 就是不知道怎么调用 谁帮着看看 php程序运行时出现了无法找到该页面,该如何解决?
// 为啥不先转编码再分割恩?很奇怪
$str = 'z7, 赵明';
$str = iconv("UTF-8", "GBK//IGNORE", $str);
var_dump( $str );
$str = explode(',', $str);
var_dump( $str );
2、新建一ANSI的php文件,内容如下header ("Content-type: text/html; charset=gbk");
var_dump( $str = file_get_contents('文件名') );
$str = iconv("UTF-8", "GBK//IGNORE", $str);
var_dump( $str );
$str = explode(',', $str);
var_dump( $str );
$arr=preg_split("/[,\s]+/",$arrNames,-1, PREG_SPLIT_NO_EMPTY);
参考下这个,是以,号后加一个空格 来分割。
<?php
$arrNames="z7, 赵明";
$arr=preg_split("/[,\s]+/",$arrNames,-1, PREG_SPLIT_NO_EMPTY);
//var_dump($arr);
$string=trim($arr[1]);
$str=mb_convert_encoding($string, 'GBK', 'UTF-8');
echo $str;
?>这个可以输出的额……不知道我这样测试对不对,我将文件保存为utf8 和ansi 都能输出不会乱码
header("Content-type:text/html;charset=gbk");
你只给出的数据串是"z7, 赵明"
那么你preg_split("/;+/u",$arrNames,-1, PREG_SPLIT_NO_EMPTY)这个正则分割所为何事?前半部分是那些数据?后半部分是哪些数据?