【问题标题】:Convert Windows-1252 to UTF-8 with AJAX使用 AJAX 将 Windows-1252 转换为 UTF-8
【发布时间】:2017-02-24 07:24:40
【问题描述】:

我的 csv 文件中有一些带有荷兰语字符的字符串,我应该在 PHP 和 JS 中读取这些字符串。

对于 PHP,我使用 iconv( "Windows-1252", "UTF-8", $str ); 方法将 Windows-1252 转换为 UTF-8 格式。当我使用fgetcsviconv 时它工作正常。

DEMO IN PHP

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 脚本并获得结果。

DEMO in JS(AJAX)

代码: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


【解决方案1】:

您应该将 test3.php 中的字符集值从 UTF-8 更改为 Windows-1252,因为数据的字符集是 Windows-1252。

所以你需要替换:

&lt;meta charset="UTF-8"&gt;&lt;meta charset="Windows-1252"&gt;

【讨论】:

  • 感谢您的回答。我将其更改为 Windows-1252 但仍然无法正常工作。 thejobupdates.com/pt/csvtest/test3.php
  • 好吧,您的代码显示您正在尝试从 windows-1252 转换为 utf8,但您的问题是您正在尝试从 utf8 转换为 windows-1252。请更正您的问题。你的字符集标签应该是 UTF-8 而不是 windows-1252
  • 感谢您的指正。修改了我的问题并将字符集改回 UTF-8
  • 尝试替换 iconv("Windows-1252", "UTF-8", $str);在 store-encode.php 中使用 utf8_encode($str)。
  • 那么你可以直接使用php获取csv文件的内容吗?例如你可以使用:$str = file_get_contents("thejobupdates.com/pt/csvtest/test.csv"); 然后使用php转换数据
猜你喜欢
  • 2014-05-06
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
相关资源
最近更新 更多