我用 fputcsv 创建 csv 文件。我希望 csv 文件位于 windows1251 ecnding 中。但是找不到解决办法。我怎样才能做到这一点?干杯
问问题
25824 次
6 回答
12
excel 文件的默认编码是机器特定的 ANSI,主要是windows1252
. 但是由于您正在创建该文件并且可能插入 UTF-8 字符,因此该文件将无法正常处理。
您可以iconv()
在创建文件时使用。例如:
function encodeCSV(&$value, $key){
$value = iconv('UTF-8', 'Windows-1252', $value);
}
array_walk($values, 'encodeCSV');
于 2012-09-19T05:21:05.113 回答
12
它正在工作:
在 fputcsv 之前享受使用它:
$line = array_map("utf8_decode", $line);
于 2014-12-12T10:10:05.220 回答
6
该文件将采用您的字符串所在的任何编码。PHP 字符串是原始字节数组,它们的编码取决于字节的来源。如果你只是从源代码文件中读取它们,它们就在你保存源代码的任何地方。如果它们来自数据库,则它们采用数据库连接设置的任何编码。
如果您需要从一种编码转换为另一种编码,请使用iconv
. 如果您需要更深入的信息,请参阅此处:
于 2012-09-19T05:27:12.673 回答
5
fputs( $fp, $bom = chr(0xEF) . chr(0xBB) . chr(0xBF) );
试试这个对我有用!!!
于 2017-06-08T07:00:22.960 回答
2
于 2012-09-19T05:19:27.880 回答
1
$string = iconv(mb_detect_encoding($string), 'Windows-1252//TRANSLIT', $string);
于 2019-02-14T15:56:07.417 回答