mysql gb2312转utf8_如何把数据从GB2312转换成UTF-8
我使用了iconv和mb_convert_encoding兩個函數(shù)都試了,然后發(fā)現(xiàn)結(jié)果是一樣的,都會出現(xiàn)各種問題,不是哪里少字了就是直接錯誤,請問大神怎么解決啊
回復(fù)討論(解決方案)
iconv("GB2312","UTF-8//IGNORE",$data)
確定 原數(shù)據(jù)是 GB2312編碼嗎
是的 確定了 是ANSI格式的
是的 確定了 是ANSI格式的
你的文件頁面編碼是什么? 要不把代碼貼出來看看
是這樣的 在做一個scv文件的導(dǎo)入功能 然后用記事本打開顯示保存編碼是ANSI,現(xiàn)在用fgetcvs來循環(huán),在里面怎么弄都是不正常的。之前用記事本打開保存為utf-8導(dǎo)入功能是OK的 ,所以頁面編碼應(yīng)該是utf-8
GB2312 是 GBK 的子集
UCS-2 是 GBK 的變體
UCS-2 與 UTF-8 間存在簡單的位移操作
所以從 GB2312 或 GBK 轉(zhuǎn)換到 UTF-8 不存在數(shù)據(jù)丟失的現(xiàn)象
反過來就有丟失的可能了
ANSI 不能說明任何問題
ANSI 泛指國家標(biāo)準(zhǔn),計算機中指的是操作系統(tǒng)的默認(rèn)字符集(可手工修改)
以 windows 為例,簡體中文系統(tǒng)就是 GBK、繁體中文系統(tǒng)就是 BIG5
那幫忙看下好嗎 我填寫的cvs文件中地區(qū)的信息是湖北省,湖南省,廣東省,通過iconv('GB2312','UTF-8',$str),就轉(zhuǎn)成一個‘省’字,假如是山東省或者山西省是完全翻譯,四川省翻譯成‘拇ㄊ’,這個是什么原因啊 卡了2天了
你能把你的文件放到云盤嗎?
或是
echo base64_encode(file_get_contents('你的csv文件名', false, null, 0, 1000));
貼出結(jié)果
結(jié)果是這樣的:
然后我用 echo iconv('GBK','UTF-8',file_get_contents($file['tmp_name']));return false;
得到的完全都是utf8的數(shù)據(jù),可惜這樣不是我想要的
1、貼出 base64 數(shù)據(jù)
2、說一下你打算做什么
把代碼貼出來 看一下 簡單的敘述你的需求
seDC6yxDUk2x4MLrLMP7s8YsvPKzxizQ0NK1LCK/zbunwODQzaOosOzKwrSmOjEs1+7W1b/Nu6c6Miy0+sDtycw6M6OpIiwiveHL48Dg0M2jqNfu1tW/zbunOjEsveHL47/Nu6c6MizP+srbv827pzozo6kiLMv5yvS/zbunLMv51NrH+NPyLMGqz7XIyyzBqs+1yMu157uwLLXY1rcssbjXoiyxuNeiMiyxuNeiMw0KLGZnZ2csc2RmZ2ZkaGgsc2FkLM28yum53dTEwMDK0iwzLDAsZmRnZGZnLMm9tqvKoSxhc2RmZywxMzgwMDEzODAwMCxmZGhmZ2hmLGFhYSxiYmIsY2NjDQo=
我想要的就是通過fgetcsv函數(shù)循環(huán)每行記錄組成數(shù)組,存入數(shù)據(jù)庫 但是直接file_get_contents的話拿到的想做到這種效果比較困難,因為在cvs文件里好多個字段,有些可填有些必填。所以才那么糾結(jié)
那根編碼轉(zhuǎn)換有什么關(guān)系$fp = fopen('你的csv文件名', 'r');while($row = fgetcsv($fp)) { $res[] = $row;}print_r($res);
謝謝版主大大這么晚了還在幫忙解決問題 ,是這樣的 ,cvs文件的編碼是gb2312的,數(shù)據(jù)庫編碼是utf8的,然后我裝進(jìn)數(shù)組之前要把這里獲取到的數(shù)據(jù)和庫里面的做比對,來獲取我要的數(shù)據(jù),而且cvs文件里好多字段的都是漢字,所以要轉(zhuǎn)碼才能入庫,問題是在外面file_get_contents之后轉(zhuǎn)碼可以進(jìn)去循環(huán)里面一個一個轉(zhuǎn)碼就不行。
不需要轉(zhuǎn)碼
只需在比較之前執(zhí)行一次 mysql_query('set names gbk'); 就可以了
版主大大 再問一個問題啊 ,那我的gbk編碼的數(shù)據(jù)如何入庫啊,庫里面是utf8的編碼,我懷疑是不是fegtcvs這個函數(shù)的作用啊 ,再里面轉(zhuǎn)碼就不行在外面轉(zhuǎn)碼就可以
gbk 的數(shù)據(jù)插入到 utf8 的表,只需在插入前執(zhí)行一次 mysql_query('set names gbk'); 就可以了
mysql_query(' set names gbk');
這條指令的作用是:通知 mysql 現(xiàn)在用 gbk 字符集進(jìn)行操作
轉(zhuǎn)碼的工作由 mysql 自己完成
恩 謝謝版主大大 ,雖然說我換了file代替了fgetcsv實現(xiàn)了功能
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
總結(jié)
以上是生活随笔為你收集整理的mysql gb2312转utf8_如何把数据从GB2312转换成UTF-8的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迅捷CAD编辑器修改文字颜色步骤
- 下一篇: Go 1.11 moudel 介绍