2

UTF-8 でエンコードされたファイルに次のようなコードがあります。

<?php
setlocale(LC_ALL, 'cs_CZ.utf8'); //Can be commented out without effect.

$input = "Štěpán,Šafránek";
$result = str_getcsv($input);

echo $result[0]; //output = "těpán";
echo $result[1]; //output = "afránek";
?>

これらのエコーが生成するクリップされた文字列に注目してください。

これも機能します:

<?php
setlocale(LC_ALL, 'cs_CZ.utf8'); //Can be commented out without effect.

$input = "aaaŠtěpán,aaaŠafránek";
$result = str_getcsv($input);

echo $result[0]; //output = "aaaŠtěpán";
echo $result[1]; //output = "aaaŠafránek";
?>

入力文字列はスクリプトの一部であるため、エンコードに問題はないはずですよね? ロケールは正しく設定されていますよね?

では、何が問題なのですか?私の解決策は、 str_getcsv() が単に壊れているということです。CSV を解析する別の方法はありますか?

興味深いことに、Windows では問題なく動作しますが、Linux ではこの動作が見られます。

ここに関連する質問がありますが、そこに記載されている解決策は役に立ちませんでした: PHP str_getcsv removes umlauts

4

0 に答える 0