さまざまな言語とアルファベットでデータを保持する必要があるデータベースがあります。デフォルトの Latin 照合順序を使用していますが、すべてのテキスト フィールドは Unicode の種類 (nchar、nvarchar) です。
フロントエンド アプリケーションを使用してデータベースに Unicode データを挿入したり取得したりできますが、SSMS を使用してデータを表示すると意味不明なデータしか表示されません。
これを挿入できます:
극단적으로
SSMS では次のようになります。
극단ì 으로
しかし、フロントエンドアプリケーションによって次のように取得されます。
극단적으로
明らかに、データ自体は正常に保存されていますが、SSMS が意味不明なデータとして表示されるのはなぜですか? 興味深いことに、SSMS を使用してデータを直接編集して上記に貼り付けると、次のように表示されます (編集:結果をグリッドからテキストに切り替えると、ボックスの代わりに適切なテキストが表示されるため、問題のこの部分が軽減されることがわかります.):
□□□□□
しかし、それをコピーしてテキスト エディターに貼り付けると、次のようになります。
극단적으로
これが単なる SSMS の誤動作 (/私による設定ミス) であるかどうかを確認するために、MS Access を使用して SQL Server データベースにリンクしましたが、SQL Server と同じ意味不明なメッセージが表示されます。
このデータベースは Web アプリケーションのすべての静的テキストを保持するため、データを簡単に表示および編集できることが重要です。
극단ì 으로
どんな提案も素晴らしいでしょう、私は本当にこれにこだわっています。
編集
これは、現時点で PHP で行ったデータ挿入の例です。
$con = sqlsrv_connect("(local)", array("Database" => "myDatabase"));
$SQL = "INSERT INTO TableName (col1,col2) VALUES (N'극단적으로',N'극단적으로')";
sqlsrv_query($con,$SQL);
そして、これは私のデータ検索の例です:
$SQL = "SELECT col1,col2 FROM TableName";
$rs = sqlsrv_query($con,$SQL);
while($row = sqlsrv_fetch_array($rs)){
echo $row["col1"]." ".$row["col2"]."\n";
}
これにより、PHP によって次のように出力されます。
극단적으로 극단적으로
しかし、そのテーブルで選択を実行すると、SSMS の出力ウィンドウにデータが意味不明に表示されます。