トップ回答者
環境依存文字

質問
回答
-
「Unicodeにあって、CP932に存在しない文字」を環境依存文字とは普通言いません。下記コードで、例外(EncoderFallbackException)が発生するかどうかで判定はできます。
Dim r As String = "123㊢" Dim cp932e = Encoding.GetEncoding(932, New EncoderExceptionFallback, New DecoderExceptionFallback ) cp932e.GetBytes(r)
結果:System.Text.EncoderFallbackException: インデックス 3にある Unicode 文字 \u32A2 を指定されたコード ページに変換できません。
jzkey- 回答としてマーク 高橋 春樹 2009年12月9日 8:35
-
nchar とは何か、調べてみました。
nchar および nvarchar (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms186939.aspx
「固定長 (nchar) または可変長 (nvarchar) の Unicode データで、UNICODE UCS-2 文字セットを使用する文字データ型です。」
このことから、nchar は Unicode の文字列を格納できると言うことですし、.NET での文字列は Unicode で扱われていますので、これまでの文字が入らなくなることはなさそうに思います。
ただし、固定長の場合は、2 文字分で 1 文字を表現する サロゲートペア がぎりぎり入らないということがあるかもしれません。
(ただ、これは CP932 に存在した文字かどうかは何とも言えません)
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。- 回答としてマーク 高橋 春樹 2009年12月9日 8:36
すべての返信
-
「Unicodeにあって、CP932に存在しない文字」を環境依存文字とは普通言いません。下記コードで、例外(EncoderFallbackException)が発生するかどうかで判定はできます。
Dim r As String = "123㊢" Dim cp932e = Encoding.GetEncoding(932, New EncoderExceptionFallback, New DecoderExceptionFallback ) cp932e.GetBytes(r)
結果:System.Text.EncoderFallbackException: インデックス 3にある Unicode 文字 \u32A2 を指定されたコード ページに変換できません。
jzkey- 回答としてマーク 高橋 春樹 2009年12月9日 8:35
-
nchar とは何か、調べてみました。
nchar および nvarchar (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms186939.aspx
「固定長 (nchar) または可変長 (nvarchar) の Unicode データで、UNICODE UCS-2 文字セットを使用する文字データ型です。」
このことから、nchar は Unicode の文字列を格納できると言うことですし、.NET での文字列は Unicode で扱われていますので、これまでの文字が入らなくなることはなさそうに思います。
ただし、固定長の場合は、2 文字分で 1 文字を表現する サロゲートペア がぎりぎり入らないということがあるかもしれません。
(ただ、これは CP932 に存在した文字かどうかは何とも言えません)
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。- 回答としてマーク 高橋 春樹 2009年12月9日 8:36
-