csv 处理外语字符的PHP iconv函数

wljmcqd8  于 2023-02-14  发布在  PHP
关注(0)|答案(2)|浏览(123)

我的应用程序正在写入路径到CSV文件,同时使用下面的代码构建CSV导出。

$path = iconv( 'UTF-8', 'ISO-8859-1', $thisRow['path'] ) ;

如果路径包含波兰语字符,即“C:\Users\Desktop\Przejście graniczne”,则**$路径值显示为空白**。
如果我注解上面的代码,并分配如下所示的路径正确显示。

$path =  $thisRow['path']  ;

但似乎这不是优雅的解决方案,因此想知道如何解决这个问题在更正确的方式?

解决方案

在编码过程中使用函数utf8_encode(),现在它按预期工作。

$path = iconv( 'UTF-8', 'ISO-8859-1', utf8_encode($thisRow['path']) ) ;
pw9qyyiw

pw9qyyiw1#

在Big5中读取CSV文件

<?php
$path = 'test.csv';
mb_internal_encoding("UTF-8"); // 設置內部字符編碼為 UTF-8

if(($open = fopen($path, "r")) !== FALSE){
    while (($rows = fgetcsv($open,  ",")) !== FALSE){  
        foreach($rows as &$row){
            $newStr = iconv("big5", 'UTF-8', $row); // 轉換編碼
            print_r($newStr);
        }
    }
    fclose($open);
}
yb3bgrhw

yb3bgrhw2#

您可以使用

$chars = ['\u0179','\u0119','\u0105','\u0107', '\u0142','\u0144','\u00f3', '\u015b','\u017a', '\u017c', '\u0104', '\u0106', '\u0118', '\u0141', '\u0143', '\u00d3', '\u015a', '\u017b'];

$polish = ['&#377;','&#281;','&#261;','&#263;', '&#322;','&#322;', '&#243;',  '&#347;', '&#378;',  '&#380;',   '&#260;',  '&#262;',  '&#280;',    '&#321;', '&#323;',       '&#211;',     '&#346;',   '&#379;' ];

$path=json_decode(str_replace($chars,$polish,json_encode($thisRow['path'])));

找到木炭并转换为波兰木炭

相关问题