nvarchar(max) 型の mydata というフィールドを持つテーブルがあります。これには、é á ñ などの文字が含まれます。データは Java (Spring) を使用して抽出されます。Java アプリケーションは、要求と応答に utf-8 を使用しています。
単純な選択を実行すると、特殊文字が正しく表示されます。
Select myData from myTable
nvarchar を受け取って返す単純な SQL 関数があります。
CREATE function getIt (@mydata nvarchar(max) )
returns nvarchar(max)
as
begin
return @mydata;
end
関数を使用すると、特殊文字が表示されず、記号に置き換えられます。
Select dbo.getIt(myData) as myData from myTable
mySQL と Oracle を使用して同じプロセスをテストしました。この場合、SQL 関数は特殊文字を変更しません。Ubuntu Linux ボックスで Tomcat を使用しています。データベースは SQL Sever 2005 です。JDTS 1.3 を使用しています。
ご協力ありがとうございました。
補足説明
フィールド myData に ñ が含まれている場合、たとえば、これを実行する場合:
Select
myData,
dbo.getIt(myData) as myData2
from myTable
Web ページに表示される列の結果は ? ? になります。または � � NVarchar はデータを適切に保存していますが、何らかの理由で関数が何かを変更しています。エンコーディングに問題がある場合、どちらの場合も ñ が正しく表示されません。