6

PHP でアラビア語を使用して既に多くの質問が投稿されていることは知っていますが、問題を解決できなかったため、この質問を投稿しています。

英語で完全に実行されている PhP サイトがあります。現在、フランス語、スペイン語、アラビア語を含む複数の言語をサポートしたいのですが、1 つのコードでそれらを使用することはできません。問題は、私は多くの場所で substr() を使用しており、翻訳された文字が substr() で意図したとおりに機能しないことです。私も mb_substsr() を試しましたが、役に立ちません:(

DB のフィールドは「utf8_general_ci」で、既に header('Content-type: text/html; charset=UTF-8'); を配置しています。コードで UTF-8 でのレンダリングを許可します。

問題は、「?????」が表示されることです。正確な単語の代わりに、または substr() で間違った単語を取得します

助けてください!!

4

3 に答える 3

22

アラビア語の場合: 位置 2 の文字のみを取得したい。

$name = "MYNAME";
$Char = substr($Name,2,2);
echo $Char; // print N this okay.

しかし、 のようなアラビア語の作業كاملでは、疑問符が返されます

case 1: $Char = substr($Name,0,1);     // Not Work and return question mark
case 2: $Char = substr($Name,1,1);     // Not Work and return question mark
case 3: $Char = substr($Name,0*2,1*2); // Work and return "ك"
case 3: $Char = substr($Name,1*2,1*2); // Work and return "ا"

だから私は解決策を見つけます:

$Char = mb_substr($Name,1,1,'utf-8');  // Work and return "ا".
于 2012-02-01T18:12:18.783 に答える
5

まず、忘れてくださいsubstr。文字列を UTF-8 でエンコードして分割する場合mb_substrは、これが唯一の実用的なソリューションです。

また、MySql の接続エンコーディングも UTF-8 であることを確認する必要があります。呼び出してこれを行います

mysql_set_charset('utf8');

直後mysql_connect。mysql 拡張機能以外のデータ アクセス層 (PDO など) を使用している場合は、これと同等の方法があります。

于 2011-06-25T18:15:39.090 に答える
0
  1. データを操作するために他のマルチバイト (mb_*) 関数を使用しているかどうかを確認してください。
  2. スクリプトが UTF-8 テキスト ファイルとして保存されているかどうかを確認します。
  3. SET NAMES utf8データベースに接続した直後にデータベースにクエリを送信するかどうかを確認します。
于 2011-06-25T18:16:17.810 に答える