実行時にアラビア語のコンテンツを取得するにはどうすればよいMSSQL_QUERYですか?
のように表示され????ます。これを実行しようとしました:
$res = mssql_query($q);
$row = mssql_fetch_row($res)
echo iconv("unicode", "utf-8", $row[0])
ただし、この場合、値は次のように漢字で表示されます潬穬
どんな提案でも大歓迎です
実行時にアラビア語のコンテンツを取得するにはどうすればよいMSSQL_QUERYですか?
のように表示され????ます。これを実行しようとしました:
$res = mssql_query($q);
$row = mssql_fetch_row($res)
echo iconv("unicode", "utf-8", $row[0])
ただし、この場合、値は次のように漢字で表示されます潬穬
どんな提案でも大歓迎です
Unicode データ型を使用するだけです。Unicode データ型は nchar、nvarchar、nvarchar(max)、および ntext であり、すべての Unicode 文字列の前に大文字の N を付ける必要があります。
INSERT INTO TableName (ColumnName) values(N'Arabic Text')
まず、http://msdn.microsoft.com/en-us/library/cc793139%28v=sql.90%29.aspx にある sqlsrv ドライバーをインストールしてみてください。指示に正しく従った後、SQLサーバーに接続するときに次を使用します。
$connArr = array(
"Database" => $dPconfig['dbname'],
"UID" => $dPconfig['dbuser'],
"PWD" => $dPconfig['dbpass'],
"CharacterSet" => "UTF-8"
);
$conn = sqlsrv_connect($dPconfig['dbhost'], $connArr) or die("cannot connect");
正常に動作するはずです。他のエンコーディングの sqsrv ドライバーのヘルプ ドキュメントも参照してください。それが役に立てば幸い。
アラビア語のテキストを選択する前に、これをデータベースに送信してみてください。
SET NAMES utf8;
たとえば、PDO を使用する場合:
try {
$dbh = new PDO(
'mysql:host=127.0.0.1;dbname=dbname',
'root',
'root',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
} catch (Exception $e) {
echo $e->getMessage();
}
次に、すべてのファイル (PHP ファイル、HTML テンプレート) が UTF-8 エンコーディングで保存されていることを確認してください。
3 番目に、すべてが失敗した場合は、iconv() 関数をもう少し試してみてください。
echo iconv("Latin1_General_CI_AS","utf-8",$row[0]);
echo iconv("Arabic_CI_AS","utf-8",$row[0]);
等々。