CSV ファイルのデータを操作したいのですが、文字が正しく表示されないことに気付きました。エンコーディングを変換するために何百万もの方法を試しましたが、何も機能しません。MacOS、PHP 7.4.4 で動作します。
fgets()
またはハンドル変数を実行した後fgetcsv()
、これを取得します(例では2行/行)。
Kód ADM;Kód obce;Název obce;Kód MOMC;Název MOMC;Kód MOP;Název MOP;Kód èásti obce;Název èásti obce;Kód ulice;Název ulice;Typ SO;Èíslo domovní;Èíslo orientaèní;Znak èísla orientaèního;PSÈ;Souøadnice Y;Souøadnice X;Platí Od
1234;1234;HorniDolni;;;;;1234;HorniDolni;;;è.p.;2;;;748790401;4799.98;15893971.21;2013-12-01T00:00:00
それは多かれ少なかれ正しいチェコ語ですが、文字č
は に取って代わられè
、ř
に取って代わられø
、どちらもチェコのアルファベットの一部ではありません。私は確信しており、ファイル内に置き忘れた文字がさらに増えると確信しています。
ウィキに関する限り、この文字セットにはチェコ語のアルファベットが含まれていないため、悲しいことfile -I path/to/file
です。file: text/plain; charset=iso-8859-1
次のコマンドはどちらも、間違った文字を変換しませんでした:
mb_convert_encoding($line, 'UTF-8', 'ISO8859-1')
iconv('ISO-8859-1', 'UTF-8', $line)
iconv('ISO8859-1', 'UTF-8', $line)
ISO-8859-1では、ø
レターに code があることに気付きました00F8
。Windows-1250 (チェコ語の aplhabet を含む) には正しい文字ř
とコード0159
がありますが、どちらも先頭に00F8
. 文字č
と同じでè
、どちらも code が前に付いています00E7
。私はエンコーディングを深く理解していませんが、ファイルは Windows-1250 でエンコードされているようですが、インタープリターはエンコーディングが ISO-8859-1 であると認識し、元の文字/コードの代わりに文字を取得します。
しかし、どちらの変換 (ISO-8859-1 => Windows-1250、ISO-8859-1 => UTF-8 またはその他の方法) も機能していません。
これを解決する方法を知っている人はいますか?ありがとう!