[英]Problem with UTF-16LE characters reading csv with php
我有一个读取 csv 文件的 php 脚本(它具有 UTF-16LE 编码)。 问题在于,在某些行中,读取 csv 行的 php 数组由于某些希腊字符而被折叠。 一个例子是波纹管(数组中有 7 个元素,波纹管只有 2 个),我该如何解决这个问题?
数组( [0] => 205198 [1] => 标签 4.2 Βάση για Σ▒ )
我的代码如下
$array = file_get_contents($this->listUrl);
$array = mb_convert_encoding($array, 'UTF8', 'UTF-16LE'); // Convert the file to UTF8
$array = preg_split("/\R/", $array); // Split it by line breaks
$array = array_map(function ($v) {
return str_getcsv($v, ";");
}, $array);
[编辑]我使用了下面的代码
$array = str_getcsv($array, "\n");
foreach ($array as &$Row) {
$Row = str_getcsv($Row, ";");
}
我最好的选择是:
您需要mb_split ,因为您正在处理多字节字符串以支持 GR lang。
一些理论:
UTF-8,著名的 ASCII = 1 字节。
支持所有 unicode 字符的 UTF-16 = 4 个字节。
一些行动:
“mb_split - 使用正则表达式拆分多字节字符串”: PHP:mb_split
还有与mb_ereg_replace类似的功能。
例子 :
$array = file_get_contents($this->listUrl);
$array = mb_convert_encoding($array, 'UTF8', 'UTF-16LE'); // Convert the file to UTF8
$array = mb_split("/\R/", $array); // Split it by line breaks
$array = array_map(function ($v) {
return str_getcsv($v, ";");
}, $array);
玩得开心 !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.