2011-01-07 20 views
0

DBから用語を取得し、文字列のリストとして実行するアプリケーションがあります。 DBテーブルには、その列のすべての外部文字を含めるためのnvarcharが設定されていました。今や、äのような文字が、DBから用語を取得して、テーブルにその方法を示すときにも、明確に現れる場合があります。 日本語またはアラビア語の文字をインポートすると、私が見るものはすべて????????です。 今私はさまざまな方法を使って変換してみました。最初にそれをutf8エンコーディングに変換して戻して、もう一度、これらの文字で完璧に動作するhttputility.htmlencodeを使用していますが、引用符など、 。 DBデザイナーは、自分が何かする必要があると非難しましたが、DBでこれらの文字をすべて表示し、クエリを検索してssearchリストに追加するのは間違いです。そうでない場合は、すべての国際文字をSQLとVB.netで正しく表示するための一貫した方法があります。.net、SQLサーバー処理のテキストエンコーディング

私はテキストファイルから読み込んだとき、私はMicrosoft.visualbasic.textfieldparserリーダーツールをutf8これは問題ではないでしょう。

答えて

1

データベースフィールドがnvarcharの場合、データは正しく格納されます。あなたが見たように。どこか

それがデータベースに到達する前に、データが失われたり、varchar型に変更されている:ストアドプロシージャ、パラメータ、ファイルのエンコーディング、ODBCの翻訳など

DECLARE @foo nvarchar(100), @foo2 varchar(100) 

--with arabic and japanese and proper N literal 
SELECT @foo = N'العربي 日本語', @foo2 = N'العربي 日本語' 
SELECT @foo, @foo2 -- gives العربي 日本語 

--now a varchar literal 
SELECT @foo = 'العربي 日本語', @foo2 = 'العربي 日本語' 
SELECT @foo, @foo2 --gives ?????? ??? 

--from my Swiss German keyboard. These are part of my code page. 
SELECT @foo = 'öéäàüè', @foo2 = 'öéäàüè' 
SELECT @foo, @foo2 --gives ?????? ??? 

ので、素敵なDB猿に謝罪。 .. :-)

+0

のような文字列値

前にNを置きます。 ü、öのような文字は正しく表示されますが、私は手動でテーブルにインポートした日本の用語を試してみましたが、?????しかし、私はvb.netを介してそれを質問したとき、私はそれが私ではないことに同意するので、私は正しく文字を見た。これを避けるための一般的なツールはありますか? – vbNewbie

+0

ü、öはASCIIですが – gbn

+0

ご回答いただきありがとうございます。それを照会し、 'N'を前に置く方法があると思いますか?テーブルからNfooを選択する... – vbNewbie

0

常に外国文字を保存するには、NVARCHARまたはNTEXTを使用してください。 UNICODEをvarchar ot textデータ型に格納することはできません。 はまた、私は思ったが、彼はその罰金を言って続けて何

UPDATE [USER] 
SET Name = N'日本語' 
WHERE ID = XXXX; 
関連する問題