[英]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.