26

mysqlにインポートされているいくつかの乱雑なデータに対してデータクレンジングを行っています。

データには「疑似」ユニコード文字が含まれており、実際には「u00e9」などとして文字列に埋め込まれています。

'Jalostotitlu00e1n' という不器用な 'u00e1n' を取り除き、対応する utf 文字に置き換える必要があります。

おそらく部分文字列とCHRを使用して、どちらのmysqlでもこれを行うことができますが、PHPを介してデータを事前処理しているので、そこでも行うことができます。

mysql と php を構成して utf データを処理する方法については、すでにすべて知っています。問題は、インポートするソース データだけです。

ありがとう

4

3 に答える 3

30

/* utf8 html を ansi に変換する関数 php */

public static function Utf8_ansi($valor='') {

    $utf8_ansi2 = array(
    "\u00c0" =>"À",
    "\u00c1" =>"Á",
    "\u00c2" =>"Â",
    "\u00c3" =>"Ã",
    "\u00c4" =>"Ä",
    "\u00c5" =>"Å",
    "\u00c6" =>"Æ",
    "\u00c7" =>"Ç",
    "\u00c8" =>"È",
    "\u00c9" =>"É",
    "\u00ca" =>"Ê",
    "\u00cb" =>"Ë",
    "\u00cc" =>"Ì",
    "\u00cd" =>"Í",
    "\u00ce" =>"Î",
    "\u00cf" =>"Ï",
    "\u00d1" =>"Ñ",
    "\u00d2" =>"Ò",
    "\u00d3" =>"Ó",
    "\u00d4" =>"Ô",
    "\u00d5" =>"Õ",
    "\u00d6" =>"Ö",
    "\u00d8" =>"Ø",
    "\u00d9" =>"Ù",
    "\u00da" =>"Ú",
    "\u00db" =>"Û",
    "\u00dc" =>"Ü",
    "\u00dd" =>"Ý",
    "\u00df" =>"ß",
    "\u00e0" =>"à",
    "\u00e1" =>"á",
    "\u00e2" =>"â",
    "\u00e3" =>"ã",
    "\u00e4" =>"ä",
    "\u00e5" =>"å",
    "\u00e6" =>"æ",
    "\u00e7" =>"ç",
    "\u00e8" =>"è",
    "\u00e9" =>"é",
    "\u00ea" =>"ê",
    "\u00eb" =>"ë",
    "\u00ec" =>"ì",
    "\u00ed" =>"í",
    "\u00ee" =>"î",
    "\u00ef" =>"ï",
    "\u00f0" =>"ð",
    "\u00f1" =>"ñ",
    "\u00f2" =>"ò",
    "\u00f3" =>"ó",
    "\u00f4" =>"ô",
    "\u00f5" =>"õ",
    "\u00f6" =>"ö",
    "\u00f8" =>"ø",
    "\u00f9" =>"ù",
    "\u00fa" =>"ú",
    "\u00fb" =>"û",
    "\u00fc" =>"ü",
    "\u00fd" =>"ý",
    "\u00ff" =>"ÿ");

    return strtr($valor, $utf8_ansi2);      

}
于 2015-05-15T11:55:36.947 に答える
21

方法があります。すべてuXXXXをHTML表現に置き換えて、html_entity_decode()

つまりecho html_entity_decode("Jalostotitlán");

フォーム内のすべてのUTF文字は、u1234HTMLでとして印刷できますሴ。ただし、UTFシーケンスの開始を識別する他の文字がない場合、誤検知が多く発生する可能性があるため、置換を行うのは非常に困難です。単純な正規表現は

preg_replace('/u([\da-fA-F]{4})/', '&#x\1;', $str)

于 2011-08-15T03:40:58.600 に答える
2

私の Twitter タイムライン スクリプトは é のような特殊文字を \u00e9 に戻すので、バックスラッシュを取り除き、@rubbude 彼の preg_replace を使用しました。

// Fix uxxxx charcoding to html
$text = "De #Haarstichting is h\u00e9t medium voor alles Into:  De #Haarstichting is hét medium voor alles";
$str     = str_replace('\u','u',$text);
$str_replaced = preg_replace('/u([\da-fA-F]{4})/', '&#x\1;', $str);

echo $str_replaced;

それは私にとってはうまくいき、次のようになります De #Haarstichting is h\u00e9t medium voor allesDe #Haarstichting is hét medium voor alles

于 2013-11-24T22:05:13.443 に答える