ホームページ >バックエンド開発 >PHPチュートリアル >GB2312からUTF-8にデータを変換する方法
iconv 関数と mb_convert_encoding 関数の両方を試してみましたが、結果は同じでした。単語が欠落しているか、直接エラーが発生します。解決方法を教えてください。議論 (解決済み) Scheme)
iconv("GB2312","UTF-8//IGNORE",$data)
はい、そうです、ANSI 形式です
ファイル ページのエンコーディングは何ですか?コードを投稿して見てみてはいかがでしょうか?
これは、scv ファイルのインポート関数を作成しています。それをメモ帳で開くと、保存エンコーディングが ANSI であることがわかります。 fgetcvs がループするのは何をしても異常です。メモ帳を使用する前は、utf-8 として保存するインポート機能は OK だったので、ページ エンコーディングは utf-8 である必要があります
GB2312 は GBK のサブセットです
UCS-2 と UTF-8
の間には単純な置き換え操作があります
逆に、損失の可能性があります
ANSI では問題を説明できません
ANSI は一般に国家規格を指します、コンピュータを指します オペレーティング システムのデフォルトの文字セットです (手動で変更できます)
Windows を例に挙げると、簡体字中国語システムは GBK で、繁体字中国語システムは BIG5 です
助けていただけますか?私が入力した cvs ファイルの地域情報が湖北省、湖南省、広東省であれば、iconv('GB2312','UTF-8',$str) を通じて「省」文字に変換されます。山東省または山西省は完全に翻訳されており、四川省は「親指」「ㄊ」と翻訳されていますが、これはなぜですか? 2 日間止まっています
ファイルをクラウド ディスクに保存できますか?
または
結果を投稿します
結果は次のようになります:
次に、 echo iconv('GBK' , 'UTF-8',file_get_contents($file['tmp_name']));return false;
1. Base64 データを投稿します
2. 教えてください何をするつもりですか
コードを投稿して見てください ニーズを簡単に説明してください
seDC6yxDUk2x4MLrLMP7s8YsvPKzxizQ0NK1LCK/zbunwODQzaOosOzKwrSmOjEs1+7W1b/Nu6c6Miy0+sDtycw6M6OpIiwiveHL4 0M2jqNfu1tW/zbunOjEsveHL47/Nu6c6MizP+srbv827pzozo6kiLMv5yvS/zbunLMv51 NrH+NPyLMGqz7XIyyzBqs+1yMu157uwLLXY1rcssbjXoiyxuNeiMiyxuNeiMw0KLGZnZ2csc2 RmZ2Zka Ggsc2FkLM28yum53dTEwMDK0iwzLDAsZmRnZGZnLMm9tqvKoSxhc2RmZywxMzgwMDEEzODAwMCxmZGhmZ2hmLGFhYSxiYmIsY2NjDQo=
それが私が望むすべてですfgetcsv 関数を使用してレコードの各行をループして配列を形成し、データベースに保存します。ただし、CVS ファイルには多くのフィールドがあり、一部は入力できるため、file_get_contents を直接使用する場合はこの効果を実現するのは困難です。そしていくつかは必須です。だから私はとても混乱しています
エンコーディングの変換はそれと何の関係があるのですか
$fp = fopen('你的csv文件名', 'r');while($row = fgetcsv($fp)) { $res[] = $row;}print_r($res);
モデレータさん、今更ながら問題解決に協力してくれてありがとうございます。 cvs ファイルのエンコーディングは gb2312 です。データベースのエンコーディングは utf8 であるため、配列にロードする前に、ここで取得したデータをライブラリ内のデータと比較して、必要なデータを取得する必要があります。さらに、CVS ファイル内の多くのフィールドは中国語文字であるため、問題は、file_get_contents の外でトランスコードするループに入ることができますが、1 つずつトランスコードすることはできません。
トランスコードする必要はありません
比較する前に mysql_query('set names gbk'); を 1 回実行するだけです
モデレーターには別の質問があります。gbk でエンコードされたデータをデータベースに入れるにはどうすればよいですか? 内部のエンコーディングは utf8 です。 fegtcvs の機能なのでしょうか。 内部でトランスコードできない場合は、
gbk データを utf8 テーブルに挿入するだけです。 mysql_query(' set names gbk') を実行するだけです。 ; 以上です
このコマンドの機能は、mysql に gbk 文字セットを使用して動作するように通知することです
トランスコーディング作業は mysql 自体によって完了します
モデレーター、ありがとうございます。機能を実現するために fgetcsv の代わりにファイルを変更しましたが