PHP で記述された Web サービスから XML を受信し、それを SQL Server データベースに挿入するアプリケーションがあります。受信したポーランド語の分音記号を含む XML を挿入しようとすると、次のようなエラーが発生します。
XML 解析: 行 2、文字 703、無効な xml 文字
私はこのようなことをしようとしました:
DECLARE @xml XML;
SET @xml = '(here I paste some sample XML that contains diacritical characters)';
SELECT @xml = CAST(@xmlstr AS XML);
INSERT INTO vos_DirectXML_ut(ValidXML,synchronization_time,synchronization_type,MethodName)
VALUES(@xml,GETDATE(),@SynchroType,@method);
ValidXML
XML
タイプ列です。
いくつかの解決策を見つけるためにグーグルで検索したところ、Utf8String が見つかりました: http://msdn.microsoft.com/en-us/library/ms160893(v=sql.90).aspx
私はそれをインストールし、XML を Utf8String に変換してから、それを通常varchar
の に変換し、次に に変換XML
して、テーブルに挿入しようとしましたが、この XML 内の文字は変更されないように見えます。変数の型が変更されるだけです。それは私の問題を解決しませんでした。
また、変数(私の場合はXML)のすべての文字に対してループを通過する手順を記述し、エンコーディングを手動で変更することで同様の問題を解決できるという男のアドバイスも見つけましたが、この男は動作が遅くなる可能性があるとも言いました。これは本当に私の問題を解決する唯一のオプションですか?