私のプロジェクトは PHP 上に構築され、MS SQL Server に接続します。sqlsrv ライブラリを使用しています。MS SQL のフィールド タイプは nvarchar です。接続のパラメーターを定義するときに、「utf8」も入力します。それは:
global $cnf;
$cnf = array();
$cnf["mssql_user"] = "xxx";
$cnf["mssql_host"] = "xxx";
$cnf["mssql_pw"] = "xxx";
$cnf["mssql_db"] = "xxx";
$cnf["CharacterSet"] = "**UTF-8**";
レコードをデータベースに挿入するとき、ベトナム語のコンテンツと中国語のコンテンツの場合、次を使用します。
$city = iconv('UTF-8', 'utf-16le', $post['city']);
$params = array(array($city, null, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY)));
$sql= "INSERT INTO tblCityGarden (city) VALUES(?)
$stmt = sqlsrv_query( $this->dbhandle, $sql, $params);
ベトナム語と中国語のデータは正常に挿入されます (ベトナム語と中国語のデータベースに格納されているデータは正しい)。
しかし、レコードを再度 Web にロードすると、奇妙な文字 (?、�) が表示されます。私はいくつかのphpをiconv、mb_detect_encoding、mb_convert_encodingとして試し、インターネットで多くの結果を検索しましたが、うまくいきません。正しいデータを表示するにはどうすればよいですか
この問題について経験のある人をお願いします