如何使用PHP将希腊字符尤其是微米符号μ写入CSV文件
PHP写入希腊字符(含微米符号μ)到CSV文件的解决方案
原实现问题说明
你当前的实现不正确,将μ手动替换为URL编码串%CE%BC写入CSV后,文件最终会直接存储编码字符串而非原始的微米符号,仅在需要URL编码格式的特殊场景下适用,常规CSV存储场景不建议这么处理。
规范实现方案
核心前提
确保全链路字符编码统一为UTF-8:
- PHP源码文件自身存储为UTF-8无BOM格式
- 待写入的
$key、$value变量编码为UTF-8,若为其他编码可使用mb_convert_encoding()函数转换
实现步骤
不要手动拼接CSV行,PHP原生提供的fputcsv()函数会自动处理分隔符转义、特殊字符兼容,比手动拼接稳定性更高,完整示例代码如下:
// 打开CSV文件写入句柄 $myFile = fopen('output.csv', 'w'); // 写入UTF-8 BOM头,解决Windows平台Excel打开UTF-8编码CSV乱码问题 fwrite($myFile, chr(0xEF).chr(0xBB).chr(0xBF)); // 自定义分隔符为分号,与你原实现逻辑对齐 $delimiter = ';'; // 直接写入行数据,无需手动转义任何特殊字符(包括μ在内的所有UTF-8字符均可正常写入) fputcsv($myFile, [$key, $value], $delimiter); // 关闭文件句柄 fclose($myFile);
特殊场景适配
如果生成的CSV不需要兼容Windows Excel打开,可以省略BOM头写入的步骤,直接调用fputcsv写入即可,字符也能正常存储。
内容的提问来源于stack exchange,提问作者Max Lindner
相关产品推荐
相关产品推荐

