Googleで簡単だと思っていた問題がありましたが、それほど簡単ではないようです。わかりました、ここに私の問題があります:
エンコーディングが不適切で異なる CSV ファイルを読まなければなりません。CSV ファイルを事前に修正することはできないため、アプリケーションで処理する必要があります。したがって、CSV ファイルには次のエンコーディングが含まれる可能性があります。
'Ü5' と 'Möbelmarkt'は同じファイルにあります。
デコード ( utf8_decode ) すると、右側が正しく、左側 (これは正しい) が間違っています。エンコーディング ( mb_detect_encoding )を見つけようとすると、これが UTF-8 であるという答えが常に得られます。
私はまだ次の解決策を試しました:
public function convert( $str ) {
return iconv( "Windows-1252", "UTF-8", $str );
}
と
private function getUmlauteArray() {
return array( 'ü'=>'ü', 'ä'=>'ä', 'ö'=>'ö', 'Ö'=>'Ö', 'ß'=>'ß', 'à '=>'à', 'á'=>'á', 'â'=>'â', 'ã'=>'ã', 'ù'=>'ù', 'ú'=>'ú', 'û'=>'û', 'Ù'=>'Ù', 'Ú'=>'Ú', 'Û'=>'Û', 'Ãœ'=>'Ü', 'ò'=>'ò', 'ó'=>'ó', 'ô'=>'ô', 'è'=>'è', 'é'=>'é', 'ê'=>'ê', 'ë'=>'ë', 'À'=>'À', 'Ã'=>'Á', 'Â'=>'Â', 'Ã'=>'Ã', 'Ä'=>'Ä', 'Ã…'=>'Å', 'Ç'=>'Ç', 'È'=>'È', 'É'=>'É', 'Ê'=>'Ê', 'Ë'=>'Ë', 'ÃŒ'=>'Ì', 'Ã'=>'Í', 'ÃŽ'=>'Î', 'Ã'=>'Ï', 'Ñ'=>'Ñ', 'Ã’'=>'Ò', 'Ó'=>'Ó', 'Ô'=>'Ô', 'Õ'=>'Õ', 'Ø'=>'Ø', 'Ã¥'=>'å', 'æ'=>'æ', 'ç'=>'ç', 'ì'=>'ì', 'Ã'=>'í', 'î'=>'î', 'ï'=>'ï', 'ð'=>'ð', 'ñ'=>'ñ', 'õ'=>'õ', 'ø'=>'ø', 'ý'=>'ý', 'ÿ'=>'ÿ', '€'=>'€' );
}
public function fixeUmlaute($string) {
$umlaute = $this->getUmlauteArray();
foreach ($umlaute as $key => $value){
$value = str_replace($key, $value, $string);
}
return $string;
}
と
function valid_utf8( $string ){
return !((bool)preg_match('~[\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\xC0\xC1]~ms',$string));
}
エンコーディングを変更するためにGoogle検索で見つけたすべての解決策です...(おそらく、この「コレクション」は他の人に役立ちます...)では、間違った文字を実際に検出するにはどうすればよいですか、それとも私の間違いですか?
誰でもヒントを教えてもらえますか?
グリーツ
Ⅴ