0

andを同一としてxxx_german2_ci扱う照合を使用して、次のようにすべての出現を強調表示することは可能ですか?üueMünchen

  • 入力例:"München can also be written as Muenchen."

  • 出力例:"<b>München</b> can also be written as <b>Muenchen</b>."

注: さらに、SQL 以外のプログラミングを使用しても問題ありません。唯一の要件は、どの文字シーケンスが同一であるかに関する知識が MySQL 照合から取得されることです。

4

2 に答える 2

1

このテーブルを見つけました: http://developer.mimer.com/collat​​ions /charts/index.tml 。もちろん、それらは土地に依存しています。照合はアルゴリズムを比較するだけです。一般的なutf8の場合、特殊文字をどのように扱うかはわかりません。

それらを使用して目的のシンボルを見つけ、出力でそれらを置き換えて、例と同じ結果を得ることができます。しかし、そのためには、何らかのプログラミング言語 (PHP など) が必要になります。

別のリソース:

http://collat​​ion-charts.org/

http://mysql.rjweb.org/doc.php/charcoll (ページの下)

基本的に、「照合アルゴリズム mysql utf8_general_ci」またはこのようなものをググってみてください

于 2013-05-23T16:56:23.393 に答える
0

結局、私はそれをすべてPHPで行うことにしたので、どの文字がutf8_general_ci.

以下は、例によって私が思いついたものです: ラベルは text から構築され、 $description部分文字列$termが強調表示され、特殊文字が変換されます。置換は完全ではありませんが、実際のユース ケースにはおそらく十分です。

mb_internal_encoding("UTF-8");

function withoutAccents($s) {
    return strtr(utf8_decode($s),
                 utf8_decode('àáâãäçèéêëìíîïñòóôõöùúûüýÿß'),
                 'aaaaaceeeeiiiinooooouuuuyys');
}

function simplified($s) {
    return withoutAccents(strtolower($s));
}

function encodedSubstr($s, $start, $length) {
    return htmlspecialchars(mb_substr($s, $start, $length));
}

function labelFromDescription($description, $term) {
    $simpleTerm = simplified($term);
    $simpleDescription = simplified($description);

    $lastEndPos = $pos = 0;
    $termLen = strlen($simpleTerm);
    $label = ''; // HTML
    while (($pos = strpos($simpleDescription,
                          $simpleTerm, $lastEndPos)) !== false) {
        $label .=
            encodedSubstr($description, $lastEndPos, $pos - $lastEndPos).
            '<strong>'.
            encodedSubstr($description, $pos, $termLen).
            '</strong>';
        $lastEndPos = $pos + $termLen;
    }
    $label .= encodedSubstr($description, $lastEndPos,
                            strlen($description) - $lastEndPos);

    return $label;
}

echo labelFromDescription('São Paulo <SAO>', 'SAO')."\n";
echo labelFromDescription('München <MUC>', 'ünc');

出力:

<strong>São</strong> Paulo &lt;<strong>SAO</strong>&gt;
M<strong>ünc</strong>hen &lt;MUC&gt;
于 2013-05-23T23:27:34.730 に答える