кодировка символов теряется при обработке .txt файла названий стран с помощью PHP - PullRequest
1 голос
/ 11 июля 2011

Я обрабатываю текстовый файл с названиями стран из ISO-3166 для извлечения только названий стран в массив. Проблема в том, что при выводе массива специальные символы для некоторых стран теряются или изменяются:

$country_1 = fopen("./country_names_iso_3166.txt", "r");        
while( !feof($country_1) ) {  // go through every line of file
$country = fgets( $country_1 );
if( strstr($country, ",") )         // if country name contains a comma
    $i = strpos( $country, "," ); // index position of comma
else
    $i = strpos( $country, ";" );   // index position of semicolon
$country = substr( $country, 0, $i );   // extract just the country name
$countries[] = $country;
}

Так что теперь, когда я выводлю массив, например, второе название страны должно быть ÅLAND ISLANDS, однако оно выводится как LAND ISLANDS ... Пожалуйста, посоветуйте, как это исправить.

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Попробуйте вместо этого использовать многобайтовые строковые функции.mb_strstr (), mb_strpos (), mb_substr () (в основном просто префикс с mb_).

1 голос
/ 11 июля 2011

Убедитесь, что поток данных, которые вы выводите, использует тот же набор символов, что и входной файл.

(устранена ошибка, связанная с тем, что ISO-3166 является кодировкой)

...