我們現在每天從日本網站上下載一個訂單txt檔案,然後通過PHP匯入到資料庫,現在每次都要先用記事本把txt轉成utf-8之後匯入才不會是亂碼,直接匯入就是亂碼,請問怎麼可以不用每次用記事本轉碼,用PHP轉碼就行了???
以下為一些資訊供大大們幫忙分析
server characterset latin1
Db characterset latin1
Client chatacterset latin1
Conn. chatacterset latin1
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem latin1
character_set_results latin1
character_set_server latin1
character_set_system latin1
character_sets_dir latin1
以下為部分代碼
mysql_query("set names utf-8");$ship_address3=mb_convert_encoding(addslashes($u[19]), 'UTF-8','auto');
回複討論(解決方案)
是否轉碼、如何轉碼,取決於未經處理資料
你說“用記事本把txt轉成utf-8”,那麼當你用記事本開啟這個檔案的時候能正確顯示內容嗎?沒有亂碼?
你使用的是日文作業系統嗎?
如有可能,你可貼出資料檔案片段以供分析
echo base64_encode(file_get_contents('你的資料檔案.txt', false, null, 0, 40));
貼出結果
開啟都是看的到的
如果你真的希望我的協助,那麼請按我說的做
貼個圖片沒有任何意義
輸出結果:
b3JkZXItaWQJb3JkZXItaXRlbS1pZAlwdXJjaGFzZS1kYXRlCXBheQ==
關於系統,日文,繁體,簡體都有可能,不過主要是日文系統。
請問xuzuning 一般base64_encode()都用在什麼地方啊
再次確認一下,你使用的作業系統是什嗎?請務必回答
按你的描述、圖片、資料片段
1、每次都要先用記事本把txt轉成utf-8,顯然文本不是utf-8的否則不需要轉換
2、作業系統是 window 系列的,不然沒有“記事本”一說
3、資料中沒有 BOM 頭,就是說使用作業系統預設的字元集儲存的
4、從圖片上看,日文部分似乎完整,未觀察到亂碼現象
由此可知
如果作業系統是簡體中文的,那麼字元集為 gbk
如果作業系統是繁體中文的,那麼字元集為 big5
如果作業系統是日文的,那麼字元集為 EUC 或 shift-JIS
所以你只要根據,你操作資料檔案的作業系統的字元集填寫下面語句就可以了
mysql_query("set names 字元集");
轉碼的工作將會由 mysql 自動完成
xuzuning大大:您好!
回答:我們是從日本amazon網站下載的,操作者的系統一般是繁體和日文,如果不能實現多系統,那以日文系統為準,我們可以要求操作者全用日文系統。
1.記事本顯示的是ansi編碼
2.我訪問日文網站的很多都是shift-jis編碼
我想問一下,如果我用了EUC或shift-JIS,那我們用簡體或繁體的顯示會不會有問題呢??
訪問日文網站的很多都是shift-jis編碼
那麼下載的檔案就是shift-jis編碼的,匯入資料庫是也用 shift-jis 編碼
簡體或繁體是中文的概念,與日文無關
當你操作 簡體或繁體 的資料來源時,自然也就是 gbk 或 big5 ?
最終存放在資料庫中的不都是 utf-8 的嗎
不也就同一起來了嗎
嗯,謝謝xuzuning大大,我今天試試!
我們的做法是,將download下載的訂單,先轉化成excel格式,之後通過php讀取。
zy205817你好,你們這樣做,跟我們用記事本轉utf-8都是一樣,都要人工轉一次碼。
xuzuning 大大,我想請問,PHP可不可以對txt檔案進行轉碼呢?就像我們用記事本進行轉碼一樣???
xuzuning 大大:
還有上次我日文沒有亂碼,這個是我同事給我的txt文檔,今天我直接從日文網站下載下來,開啟日文部分全是亂碼,需要用excel進行轉碼,用記事本直接轉uft-8都不行