【发布时间】:2017-02-24 07:24:40
【问题描述】:
我的 csv 文件中有一些带有荷兰语字符的字符串,我应该在 PHP 和 JS 中读取这些字符串。
对于 PHP,我使用 iconv( "Windows-1252", "UTF-8", $str ); 方法将 Windows-1252 转换为 UTF-8 格式。当我使用fgetcsv 和iconv 时它工作正常。
PHP 中的代码
<?php
function convert( $str ) {
return iconv( "Windows-1252", "UTF-8", $str );
}
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
echo '<strong>Before Conversion:</strong><br>';
echo '<pre>' . var_dump($data) . '</pre>';
$data = array_map( "convert", $data );
echo '<strong>After Conversion:</strong><br>';
echo '<pre>' . var_dump($data) . '</pre>';
}
fclose($handle);
}
?>
现在由于 JS 中没有 iconv 的等价物,我尝试使用 AJAX 运行 PHP 脚本并获得结果。
代码:JS:
<script>
jQuery.get('test.csv', function(data) {
var storeData = data;
jQuery.ajax({
url: "stores-encode.php",
type: "POST",
data: {data: storeData},
success: function(result){
document.write(result);
},error: function(){
document.write('error');
}
});
});
</script>
PHP (stores-encode.php):
<?php
$str = $_POST['data'];
$str = iconv( "Windows-1252", "UTF-8", $str );
echo $str;
?>
如果您检查demo,您可以看到转换前后的字符串。我无法进行转换。谁能帮助我如何转换字符集以包含这些字母。
你可以看一下csv文件here。
【问题讨论】:
-
下载的 test.csv - 它仍然是 Windows 1252
-
是的。但是当我从 csv 文件中读取值时。字符集在浏览器上不可见 thejobupdates.com/pt/csvtest/test3.php
-
你为什么不通过php代理csv文件,那会转换编码? - 我的意思可能不是您要寻找的最好的解决方案,但它会起作用。
-
试试这个。 stackoverflow.com/a/39411706/7581087(虽然支持有限)
-
现在尝试使用 fgetcsv 从 csv 获取数据。
标签: javascript php jquery ajax character-encoding