TECHNOLOGY

FAQ (よくある質問)

対象バージョン : 6.0.x、7.0.x
対象OS : Windows95/98/ME ,WindowsNT/2000

QUESTION ( SQ0106016 )

ISQLやアプリケーションからのクエリ実行時、特定の日本語コードが化けてしまいエラーとなってしまう

ANSWER

この現象は、特にMicrosoft社 が SJIS に対して独自に拡張した文字コードを使用した際に発生する現象です。まず、使用されている漢字の文字コードをご確認ください。これは、文字コード範囲についての Adaptive Server Anywhere仕様に起因します。

使用される文字コードの範囲の定義は Anywhere では「照合(collation)」によって管理されています。Anywhere の Shift JIS 系(SJIS, SJIS2, CP932)の照合では、81~9F および E0~FCをダブルバイト文字の1バイト目、その他の文字をシングルバイト文字と定義しています。そのため、文字列中にWindows の拡張文字が入っている場合、ダブルバイト文字として認識されません。

例えば、 FDE6 というダブルバイト文字の場合、1バイト目の FD はシングルバイト文字と認識します。次の E6 はダブルバイト文字の1バイト目として定義されていますので、次の1バイトとセットで1文字とみなされます。もしも FDE6 という文字の次に、文字列を閉じるシングルクォーテーションがあった場合は、クォーテーションがなくなり、構文エラーとなってしまいます。

これらの Windows 拡張文字については、カスタム照合を作成することにより、ダブルバイト文字として認識させることが可能となります。