繁体   English   中英

PHP-将Unicode转换为CSV,例如汉字

[英]PHP - Convert Unicode for CSV, e.g. chinese characters

通过表单发布,我们将数据传递到PHP脚本,该脚本为电子表格程序(例如excel)创建可下载的CSV。 如果未传递特殊字符,则下面的scipt可以完美工作。 但是传递特殊字符(如中文字母)以unicode结尾。

示例:我们通过表单字段将“你好世界”(hello world,unicode:你好世界)发送到此php脚本export.php

<?php //opens a download dialog, download by excel
header("Content-type: text/csv; charset=UTF-8");
header("Content-Disposition: attachment; filename=\"eCalc Results.csv\"");
echo html_entity_decode(urldecode($_POST["exportData"])); 
// returns unicode &#20320;&#22909;&#19990;&#30028;
?>

我们如何将这个Unicode转换为CSV,使中文字母再次正确显示为你好世界...?

这里是示例: http : //s4a.ch/exporttest/hello.php

我们搜索了整个stackoverflow,但是没有成功转换...

感谢您的帮助eCalc

...找到了解决方案:

首先,不是使用javascript encode()而是使用encodeURI()对发送方进行编码,并使用

<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />

在标题中。

...这里是export.php(已插入BOM表!)

<?php

header("Content-Encoding: UTF-8"); 
header("Content-Disposition: attachment; filename=\"eCalc Results.csv\"");
header("Content-type: text/csv; charset=UTF-8");
echo "\xEF\xBB\xBF"; // first send the UTF-8 BOM for Excel

echo html_entity_decode(urldecode($_POST["exportData"]));
?>

您可能会研究PHP文档的这一部分: http : //php.net/manual/en/function.utf8-encode.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM