9

当社のWebサイトでは、一部のMacユーザーは、PDFファイルからTextArea(TinyMCEによって処理される)にテキストをコピーして貼り付けるときに問題が発生します。e?強調表示された文字はすべて破損しておりé、たとえば、、などになりましi?î。この問題をWindowsコンピューターで再現することはできません。

TextAreaのコンテンツをファイルに書き込んだとき(データベースに挿入する前)、イニシャルが従来のものとは視覚的に異なることに気づきましたé(Vimでは以下を参照)。

問題の視覚的な例

それはそう :

// the corrupted é - first line of the screenshot
echo bin2hex($char); // display 65cc81

// traditionnal é
echo bin2hex('é');   // display c3a9

たくさん検索した後、私はここにいます:Mac OSはUnicodeで強調された文字を2つの文字の組み合わせとしてコピーしているようです:この例では、e + ́。これまでのところ、データベースでé回避するために、破損したものを実際のソリューションに置き換えるソリューションは見つかりませんでした。e?

そして、私は少し必死です。

4

3 に答える 3

8

表現をある形式または別の形式に正規化するプロセスは、正規化と呼ばれます。PHP にはそのためのNormalizerクラスがあり、それを介してすべての入力を送信することをお勧めします。

$input = Normalizer::normalize($input);

形式 C、正規分解に続いて正規合成に正規化することをお勧めします。

そのクラスがシステムで利用できない場合は、Patchwork UTF-8 ライブラリがあります。

于 2012-11-27T14:17:42.023 に答える
0

エディターに挿入する前に、貼り付けたコンテンツを処理する関数を定義できる tinymce 構成パラメーターがあります

その関数を使用すると、特殊文字を目的の形式に置き換えることができます

tinyMCE.init({
        ...
        paste_preprocess : function(pl, o) {
            // Content string containing the HTML from the clipboard
            o.content = o.content.replace(/\u2020/, 'x'); // example
        },
        paste_postprocess : function(pl, o) {
            ...
        },
        ...
});
于 2012-11-27T14:33:44.103 に答える