يقوم مباحث أمن الدولة بإخراج سلسلة Unicode كرمز حرف Shift-JIS إلى ملف نصي

تاريخ إنشاء الصفحة :

الأنماط التي تؤدي إلى أخطاء

افترض أن عمود من نوع nvarchar في جدول على SQL Server يحتوي على سلسلة لا يمكن استخدامها في Shift-JIS. بالمناسبة ، إذا وضعت هذه الأحرف في عمود varchar ، فهناك أحرف لا يمكن استخدامها ، مثل عمود "ColumnShiftJis" على اليمين. استبدله.

Unicode 文字をデータベースのテーブルに入れる

في مباحث أمن الدولة، يتم إعداد التدفق لقراءة البيانات من الجدول السابق كما هو موضح في الشكل وإخراجها إلى ملف نصي.

テキストファイルへ出力する様にフローを構築

افترض أنك تريد إخراجه كملف CSV. نظرا لأن Shift-JIS غالبا ما يستخدم في ملفات CSV، قم بتعيين ترميز الأحرف للملف النصي إلى Shift-JIS.

文字コードを Shift-JIS に設定

إذا قمت بالتنفيذ باستخدام هذا الإعداد ، فسيحدث خطأ في توقيت الإخراج.

テキストファイル書き込み時にエラー

تظهر رسالة خطأ مشابهة لما يلي:

エラー内容

سيتم أيضا مقاطعة ملف الإخراج في منتصف الطريق عند حدوث الخطأ.

出力されたテキスト

إذا حاولت الإخراج كما هو ، فسيكون ذلك خطأ ، لذا حاول دمج "تحويل البيانات" في المنتصف.

データ変換 追加

قم بتحويل نوع البيانات من "DT_WSTR" إلى "DT_STR" واجعله نموذجا يمكن إخراجه إلى Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

ومع ذلك ، إذا قمت أيضا بتنفيذ هذا ، فستحصل على خطأ. وذلك لأن مباحث أمن الدولة تفشل بشكل صارم في المعالجة الضمنية التي تتسبب في فقدان البيانات. إذا كنت تريد أن تقوم مباحث أمن الدولة بإجراء معالجة النص غير المكتوب، فستحتاج إلى تحديد استبدال الأحرف بشكل صريح لجميع الأحرف.

データ変換エラー

الحلول البديلة

هناك طريقة لتغيير نوع النص باستخدام SQL عند القراءة من جدول في قاعدة بيانات. إذا كان SQL ، فهو محرك SQL Server الذي يقوم بتشغيله ، وليس SSIS ، بحيث يمكن تشغيله بدون أخطاء. بالمناسبة ، جميع الأحرف التي لا يمكن استخدامها في Shift-JIS هي "؟" تم التحويل إلى: هذه مواصفات جانب SQL Server. حتى لو لم يكن SSIS ، فإن النتيجة مشابهة لجميع الأنظمة التي تستخدم SQL Server.

افتح ADO NET Translator وقم بتغيير وضع الوصول إلى البيانات إلى SQL Command. الآن بعد أن يمكنك إدخال SQL ، اكتب عبارة Select لاسترداد البيانات من قاعدة البيانات. يتم تحويل النص الذي يحتوي على أحرف لا يمكن استخدامها في Shift-JIS قسرا إلى varchar باستخدام cast.

SQL で varchar に変換

نظرا لأن الأحرف التي لا يمكن استخدامها في Shift-JIS قد تمت إزالتها بالفعل في وقت تدفق البيانات إلى SSIS ، يمكن تمرير المعالجة كما هي.

処理成功

يمكنك أن ترى أن النص مكتوب بنجاح إلى CSV. أيضا، جميع الأحرف التي لا يمكن استخدامها في Shift-JIS هي "؟" يمكنك أن ترى أنه تم تحويله إلى:

出力されたテキスト