7

我用 fputcsv 创建 csv 文件。我希望 csv 文件位于 windows1251 ecnding 中。但是找不到解决办法。我怎样才能做到这一点?干杯

4

6 回答 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

试试 iconv 函数:

http://php.net/manual/en/function.iconv.php

要将您传递给 fputcsv 函数的数组成员转换为您想要的编码。

于 2012-09-19T05:19:27.880 回答
1
$string = iconv(mb_detect_encoding($string), 'Windows-1252//TRANSLIT', $string);
于 2019-02-14T15:56:07.417 回答