从excel中读取的中文输入到mysql中怎么变成了一堆乱码? 输出语句看看。有可能是你里面有些特殊字符没有处理,而在PHPMYADMIN中会帮你处理掉的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是其中一条输出的SQL语句:INSERT INTO jyprice SET gameId='1',properties='宝石',proType='1',price='12'插入后properties字段值为'宝石',应该是'宝石'才对,为什么会这样? 你把mysql设置成支持中文的。就行了 to:pswdf(小邪) 我把其中一条输出的SQL语句:INSERT INTO jyprice SET gameId='1',properties='宝石',proType='1',price='12'在phpmyadmin中执行是没有乱码的,mysql应该是已经支持中文了. 这个是在程序里执行的?不是在phpmyadmin里执行的吧?应该是程序的问题。你把这个sql语句打印出来然后看看源文件,看看中文是不是乱码。 excel里保存的是unicode,就是你看到的宝石,CSDN里有一个unicode转gb2312的类,自己找一下 to: itian(倚天) INSERT INTO jyprice SET gameId='1',properties='宝石',proType='1',price='12'是在程序即将执行mysql_query($sql)时打印出来的sql语句,为什么执行后会成乱码??? 宝石这行字就是宝石的意思,不是乱码。你用dw自己写上一些内容看看源代码就知道了。 php的汉字转换: Unicode(UTF8)->GBK http://dev.csdn.net/develop/article/14/14732.shtm怎样用这个类来解决我的问题,我在生成sql语句时用$qswh->decode('宝石'),但结果还是不行,请高手帮帮我,急!!! xpace(流氓王子) 在吗? 帮帮我吧,分不够我另开帖给分你. php的汉字转换: Unicode(UTF8)->GBK 这个我用过...可以通过...不过有更简单的方法---iconv函数。 出现这个是正常的,那并不是乱码。宝石 就是 宝石只不过他是采用了以文本格式表示的unicode代码在includes.inc中定义了一个get函数所有读出数据都要在这里处理function get( $exc, $data ){ switch( $data['type'] ) { // string case 0: $ind = $data['data']; if( $exc->sst[unicode][$ind] ) { return uc2html($exc->sst['data'][$ind]);//这就是编码处理。如果你需要,可以这里。但不建议那样做 }else return $exc->sst['data'][$ind]; // integer case 1: return (integer) $data['data']; // float case 2: return (float) $data['data']; case 3: return gmdate("m-d-Y",$exc->xls2tstamp($data[data])); default: return ''; }}为什么不建议修改那里呢?1、unicode编码覆盖了全世界的各种文字,中文只是其中一部分2、一个excel文档可能包含各种文字,不能简单的都视为中文如果非要指定只能接受中文,那我也没有办法 to: xuzuning(唠叨)我在function get( $exc, $data )中修改如下:return $qswh->decode(uc2html($exc->sst['data'][$ind]));//这就是编码处理。如果你需要,可以这里。但不建议那样做为什么还是不行????应该怎样才可以? 帮我改改,急呀!!! 1、我不知道你对原程序做了多大改动2、$qswh是什么?在哪里实例化的?能传进get函数里吗?3、uc2html函数定义为function uc2html($str) { $ret = ''; for( $i=0; $i<strlen($str)/2; $i++ ) { $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]); $ret .= '&#'.$charcode; } return $ret;}就是说一个unicode编码的串经过uc2html后已经是文本形式的串了4、再说我也不知道$qswh->decode是如何处理的 修改uc2html函数为function uc2html($str) { $ret = ''; for( $i=0; $i<strlen($str)/2; $i++ ) { $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);// $ret .= '&#'.$charcode;$ret .= iconv("utf-8","gb2312",u2utf8($charcode)); } return $ret;}其中u2utf8为function u2utf8($c) { $str=""; if ($c < 0x80) { $str.=$c; } else if ($c < 0x800) { $str.=chr(0xC0 | $c>>6); $str.=chr(0x80 | $c & 0x3F); } else if ($c < 0x10000) { $str.=chr(0xE0 | $c>>12); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } else if ($c < 0x200000) { $str.=chr(0xF0 | $c>>18); $str.=chr(0x80 | $c>>12 & 0x3F); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } return $str; } 问题解决,谢谢 xuzuning(唠叨) 接分! 遇到跟gjs_w(阿松)一样的问题,但为什么我按xuzuning(唠叨) 兄说的做不行!还有,有一个hebrevc函数可以将之转换成中文,但为什么在includes.inc里面用就没有任何反应!谁能帮忙解决啊? 请教一个php中事务处理的问题 关于php如何读取网络路径?急等,100分,解决就送,谢谢 一个奇怪问题 怎么删除mysql中指定的记录? 关于fsockopen 连接不上服务器。 刚学PHP,一些问题.... 求助:各位大虾,帮我看看这个流控制里的值为什么就不是“1”呢? 一个关于MYSQL数据库查询效率问题 为什么只能显示255个字符?(后续) 请问PHPTriad在什么地方设置PHPmyadmin的显示为中文? 购物车首页(购物页面)如何传值给购物车页面。 为什么我去不擀换行符?
插入后properties字段值为'宝石',应该是'宝石'才对,为什么会这样?
我把其中一条输出的SQL语句:INSERT INTO jyprice SET gameId='1',properties='宝石',proType='1',price='12'在phpmyadmin中执行是没有乱码的,mysql应该是已经支持中文了.
应该是程序的问题。你把这个sql语句打印出来然后看看源文件,看看中文是不是乱码。
INSERT INTO jyprice SET gameId='1',properties='宝石',proType='1',price='12'是在程序即将执行mysql_query($sql)时打印出来的sql语句,为什么执行后会成乱码???
这行字就是宝石的意思,不是乱码。你用dw自己写上一些内容看看源代码就知道了。
怎样用这个类来解决我的问题,我在生成sql语句时用$qswh->decode('宝石'),但结果还是不行,请高手帮帮我,急!!!
这个我用过...可以通过...
不过有更简单的方法---iconv函数。
宝石 就是 宝石
只不过他是采用了以文本格式表示的unicode代码
在includes.inc中定义了一个get函数所有读出数据都要在这里处理
function get( $exc, $data )
{
switch( $data['type'] )
{
// string
case 0:
$ind = $data['data'];
if( $exc->sst[unicode][$ind] ) {
return uc2html($exc->sst['data'][$ind]);//这就是编码处理。如果你需要,可以这里。但不建议那样做
}else
return $exc->sst['data'][$ind];
// integer
case 1:
return (integer) $data['data'];
// float
case 2:
return (float) $data['data'];
case 3:
return gmdate("m-d-Y",$exc->xls2tstamp($data[data]));
default:
return '';
}
}为什么不建议修改那里呢?
1、unicode编码覆盖了全世界的各种文字,中文只是其中一部分
2、一个excel文档可能包含各种文字,不能简单的都视为中文
如果非要指定只能接受中文,那我也没有办法
我在function get( $exc, $data )中修改如下:
return $qswh->decode(uc2html($exc->sst['data'][$ind]));//这就是编码处理。如果你需要,可以这里。但不建议那样做
为什么还是不行????
应该怎样才可以? 帮我改改,急呀!!!
2、$qswh是什么?在哪里实例化的?能传进get函数里吗?
3、uc2html函数定义为
function uc2html($str) {
$ret = '';
for( $i=0; $i<strlen($str)/2; $i++ ) {
$charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
$ret .= '&#'.$charcode;
}
return $ret;
}
就是说一个unicode编码的串经过uc2html后已经是文本形式的串了
4、再说我也不知道$qswh->decode是如何处理的
function uc2html($str) {
$ret = '';
for( $i=0; $i<strlen($str)/2; $i++ ) {
$charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
// $ret .= '&#'.$charcode;
$ret .= iconv("utf-8","gb2312",u2utf8($charcode));
}
return $ret;
}其中u2utf8为
function u2utf8($c) {
$str="";
if ($c < 0x80) {
$str.=$c;
} else if ($c < 0x800) {
$str.=chr(0xC0 | $c>>6);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x10000) {
$str.=chr(0xE0 | $c>>12);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x200000) {
$str.=chr(0xF0 | $c>>18);
$str.=chr(0x80 | $c>>12 & 0x3F);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
return $str;
}
还有,有一个hebrevc函数可以将之转换成中文,但为什么在includes.inc里面用就没有任何反应!
谁能帮忙解决啊?