谁有办法帮我转换一个字符串: 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检查磁盘的问题 清高人给检查一下这一段有什么语法错误,找了好半天,还没找到,谢谢了 麻烦帮我看这个查询语句(修改) . 和 -> 的区别 http://www.newstepnanhai.com.cn/ 怎么得到变量的名字? [求助]关于正则表达式的问题: [★★HELP★★]一个留言本程序,怎么取得留言的id? 用php如何得到一个汉字的ASCII 新手从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)这个正则分割所为何事?前半部分是那些数据?后半部分是哪些数据?