ホームページ  >  記事  >  バックエンド開発  >  PHPでCSVをインポートすると文字化けする場合はどうすればいいですか?

PHPでCSVをインポートすると文字化けする場合はどうすればいいですか?

藏色散人
藏色散人オリジナル
2022-11-21 09:32:431863ブラウズ

php による CSV インポートの文字化け問題の解決策: 1. 解析関数 "function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {...}"; を構築します。 2. ファイルを変数に読み込みます; 3. "substr($s,2)" を通じて BOM ヘッダーを削除します。 : Windows7 システム、PHP バージョン 8.1、Dell G3 コンピューター

php で文字化けした csv ファイルがインポートされた場合はどうすればよいですか? PHPでCSVをインポートすると文字化けする場合はどうすればいいですか?

インポートされた csv ファイルが文字化けする問題を解決する淘宝アシスタント by php と分析

PHP を使用して csv ファイルをインポートすると、特に淘宝アシスタントのデータ パッケージをインポートする場合に中国語の文字化けが発生することがよくあります。インターネットで多くのトランスコード方法を調べましたが、どれも問題を解決できませんでした。その理由は何ですか? まず第一に、淘宝アシスタントによってエクスポートされた csv ファイルは UTF-16LE エンコードされていますが、これは珍しいことですよね?

第二に、その csv ファイルはカンマ区切りではありません

合格 次のコードは、csv ファイル解析機能を実現できます。

/**
* 构造一个解析函数
* (php内置的str_getcsv不知为何会出现局部乱码,原因不详)
*/
function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {
$fp = fopen('php://temp/', 'r+');
fputs($fp, $string);
rewind($fp);
while($t = fgetcsv($fp, strlen($string), $delimiter, $enclosure)) {
$r[] = $t;
}
if(count($r) ==1) return current($r);
return $r;
}
$s = file_get_contents($path); //读取文件到变量
$s = iconv('UTF-16LE', 'utf-8', substr($s,2));//转码,substr($s,2)的作用是去掉 BOM 头 FFFE
//有的第三方数据包很不规范,控制符没有用空双引号
//可能导致列数不对应,在此加上空双引号
$s = str_replace("\t\t", "\t\"\"\t", $s);
$s = str_replace("\t\t", "\t\"\"\t", $s);
$csv_data = tb_str_getcsv($s, "\t");//读取到数组

推奨学習: "

PHP ビデオ チュートリアル

"

以上がPHPでCSVをインポートすると文字化けする場合はどうすればいいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。