この朗報に感謝。私はそれをテストして確認される
こんにちは、
ソリューションは、一般的に良くありません。なぜ?これは、256(変換され、良好な表示)でASCIIコードを持つ文字で動作していますが、ASCIIコードを持つ文字は、256以上の私が持っている"?"兆し。
我々は1つで私たちの2つのソリューションを組み合わせる必要があるので、
例:
この行:PHP Code:
function vbet_encodeToSafeUTF8(&$string) {
$string = preg_replace('/([\340-\357])([\200-\277])([\200-\277])/e',
'\'&#\'.((ord(\'\\1\')-224)*4096 + (ord(\'\\2\')-128)*64 + (ord(\'\\3\')-128)).\';\'',
$string);
//decode two byte unicode characters
$string = preg_replace('/([\304-\337])([\200-\277])/e',
'\'&#\'.((ord(\'\\1\')-192)*64+(ord(\'\\2\')-128)).\';\'',
$string);
$string = utf8_decode($string);
return $string;
}
256でASCIIコードを持つ文字も定義は私の関数でだけではデコードされるPHP Code:
[\304-\337]
私はそれがstill.Iすべてが正しく動作することを全くわからないテストしています。PHP Code:
utf8_decode
あなたもそれをテストすることができます!
私の目的のために、ソリューションが正常に動作します...私は2つだけlangaugesに翻訳していますように...英語とフランス語。両方とも、ISO - 8859 - 1(latin1の)言語です。したがって、"utf_decode"機能が正常に動作します。
しかし、ビュー内のグローバルスコープで、utf_decodeの機能は、おそらく"latin1"の外の他の言語では動作しません。
私はvbulletinのプログラマの多くではない。しかし、私は1つの提案を提供します。
あなたのソリューションが動作しない場合は、おそらく使用して、"if"ステートメントは、よりよい目的に合わない場合があります。以下の例では、"translated_language_varは"に変換する先の言語になります。
IE:
おそらく、このようなものを使用すると、すべての安全を守るために確実な方法だろう...???私はあなたが簡単にこの擬似コードを使用して、vbulletinのために動作させることができるはずだ。PHP Code:
$latin1 = array(English,French,Spanish,Italian....etc);
if (in_array(translated_language_var,$latin1)){
$string = utf_decode($string);
}else{
original solution;
}
return $string;
で最後に編集 freddie3218; 14-03-11 に 05:12.
解決 - 次relaseに含まれます。