C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VisualStudioでDBに日本語入力できない


(過去ログ 136 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■80254 / inTopicNo.1)  VisualStudioでDBに日本語入力できない
  
□投稿者/ ぽっぽ (2回)-(2016/06/24(Fri) 16:21:37)

分類:[データベース全般] 

VisualStudio2015ExpressでDatabase1.mdfを追加
SQLSERVERオブジェクトエクスプローラーで以下の操作をおこなう

Tableを作成、カラムにvarchar(50)を設定
VisualStudioでデータの表示
日本語を入力する -> ?となり文字化けしている

どうすれば日本語入力できるでしょうか。

引用返信 編集キー/
■80255 / inTopicNo.2)  Re[1]: VisualStudioでDBに日本語入力できない
□投稿者/ WebSurfer (949回)-(2016/06/24(Fri) 17:08:21)
No80254 (ぽっぽ さん) に返信

> Tableを作成、カラムにvarchar(50)を設定

varchar を nvarchar に変更したらどうなりますか?

検証したわけではありませんのでハズレでしたらすみません。
引用返信 編集キー/
■80257 / inTopicNo.3)  Re[2]: VisualStudioでDBに日本語入力できない
□投稿者/ ぽっぽ (3回)-(2016/06/24(Fri) 17:13:20)
オブジェクトエクスプローラー上で追加したdbは
nvarchar にすれば日本語入力可能となりました。

ソリューションエクスプローラー上で追加したdbは
nvarchar にしても文字化けします

うーん・・・
引用返信 編集キー/
■80263 / inTopicNo.4)  Re[1]: VisualStudioでDBに日本語入力できない
□投稿者/ 魔界の仮面弁士 (750回)-(2016/06/24(Fri) 22:36:58)
No80254 (ぽっぽ さん) に返信
> 日本語を入力する -> ?となり文字化けしている

データベースの照合順序が、Japanese 系になっているかどうか確認してみてください。
『select name,collation_name from sys.databases』のクエリーで調査できます。

たとえば、「Latin1_General_CI_AS」や「SQL_Latin1_General_CP1_CI_AS」などの場合、
コード ページ 1252 相当になるので、英語圏の文字しか扱えない事になります。

平仮名やカタカナを扱いたいのであれば、この値が
「Japanese_CI_AS」や「Japanese_Bushu_Kakushu_100_CS_AI_KS_WS」や
「Japanese_Unicode_BIN2」などといった『日本語圏の照合順序』である必要があります。


> どうすれば日本語入力できるでしょうか。

LocalDB インスタンスの照合順序は
SQL_Latin1_General_CP1_CI_AS 固定で、変更できません。

SELECT CONVERT (varchar, SERVERPROPERTY('collation'));


そのため照合順序を特に指定していない場合、
新しいデータベースも英語版になります。


ただし、データベース レベル、列レベル、式レベルの照合順序は
サポートされています。(利用可能な照合順序は SQL Server バージョンに依存)

たとえば

CREATE TABLE [Table1]
( [Id] INT NOT NULL PRIMARY KEY
, [Col1] VARCHAR(10)
, [Col2] VARCHAR(10) COLLATE Japanese_90_BIN2
, [Col3] VARCHAR(10) COLLATE Japanese_CI_AS
, [Col4] VARCHAR(10) COLLATE Japanese_CS_AS_KS_WS
);

とすれば、この Table1 は Col1 は日本語非対応ですが
Col2〜Col4 は日本語対応になります。


あるいは、明示的に照合順序を指定した包含データベースを作成する事もできます。

CREATE DATABASE TEST
ON PRIMARY (
   NAME=TEST_DATA,
   FILENAME = 'C:\YourFolder\TEST.mdf'
)
LOG ON (
  NAME=Test_log,
  FILENAME = 'C:\YourFolder\TEST_LOG.ldf'
)
COLLATE Japanese_CI_AS
;

引用返信 編集キー/
■80266 / inTopicNo.5)  Re[2]: VisualStudioでDBに日本語入力できない
□投稿者/ WebSurfer (950回)-(2016/06/24(Fri) 23:26:59)
No80263 (魔界の仮面弁士 さん) に返信

Unicode 型列 (NCHAR/NVARCHAR) であれば照合順序に関係なく日本語か使える
と思います。

照合順序の問題で文字化けするのは、例えばこの記事に書いてあるように N プ
レフィックスを使わなかった場合がありますが・・・

[SQL Azure] Unicode型列(NCHAR/NVARCHAR) に格納されるデータが “?” になる
https://blogs.msdn.microsoft.com/dsazurejp/2012/06/28/sql-azure-unicodencharnvarchar/

質問者さんのケースで文字化けするのが何故かは謎です。
引用返信 編集キー/
■80272 / inTopicNo.6)  Re[3]: VisualStudioでDBに日本語入力できない
□投稿者/ WebSurfer (952回)-(2016/06/26(Sun) 15:15:53)
No80257 (ぽっぽ さん) に返信

> ソリューションエクスプローラー上で追加したdbは
> nvarchar にしても文字化けします
>
> うーん・・・

詳しいことが何も書いてないので何故そうなるかは自分には謎です。

解決したいという希望があるのなら、回答者が謎を解くための情報を提供しませんか。
例えば:

問題の列が nvarchar になっているか確認しましたか? どのように確認しましたか?

文字化けするという文字列は具体的にどういうものですか?

その文字列を、何を使って、どのようにテーブルに INSERT しましたか? INSERT クエ
リを使ったのならそのクエリを、ADO.NET を使ってプログラムで行ったのならそのソース
を公開できませんか?

文字化けしているという結果は何を見て判断しましたか? もとの文字列がどのように
文字化けしたのですか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -