• No : 31209
  • 公開日時 : 2019/12/16 17:27
  • 印刷

【DataSpider Servista】 Mapper で全角から半角へ変換できません

読み込んだ文字列を全角から半角に変換したいのですが、Mapperにおいて「全角→半角」を使用しても期待通りに変換が出来ません。
カテゴリー : 

回答

■仕様説明
DataSpider Servistaにおいての文字列の扱いについては、Javaの仕様により内部的にUnicodeを使用しております。一部のアダプタでは文字エンコードを指定可能ですが、指定された文字エンコードを前提としてUnicodeへ変換が行われています。
DataSpider Servista では、使用頻度が比較的高い「Windows-31J」*1をUnicodeへ変換した際のコードポイント*2を想定して、Mapperの「全角→半角」ロジックで対応しています。
よくある事例として、読み込み処理時の文字エンコード指定が「Windows-31J」ではなく「Shift_JIS」と指定している場合に、想定通りに変換されない文字がございます。
 
■対応策
[対応策1] 読み込み処理時の文字エンコードが「Shift_JIS」とする必要がある場合
  1. 読み込み処理の後に「SJISからCP932に変換」処理を追加します。
  2. 書き込み処理の前に「CP932からSJISに変換」処理を追加します。
[対応策2] 読み込み処理時の文字エンコードが「Shift_JIS」でなくても問題がない場合
  1. 読み込み処理の文字エンコード指定を「Windows-31J」へ変更します。
  2. 書き込み処理の文字エンコード指定を「Windows-31J」へ変更します。
■補足
文字エンコードのうち「Windows-31J」と「Shift_JIS」については、同じコードポイントとなる文字でも、Unicodeへの変換ルールが異なる文字があります。
 
 
文字
Windows-31J
Shift_JIS
Windows-31j → Unicode
Shift_JIS
→ Unicode
― (全角ダッシュ) 0x815C U+2015  U+2014
~ (全角チルダ) 0x8160 U+FF5E U+301C
∥ (二重縦線)  0x8161 U+2225 U+2016
- (全角マイナス) 0x817C U+FF0D U+2212
¢ (セント) 0x8191 U+FFE0 U+00A2
£ (ポンド) 0x8192 U+FFE1 U+00A3
¬ (ノット)  0x81CA U+FFE2 U+00AC
 
*1 日本語版Windowsで採用されている「Shift_JIS」規格の一種です。別名として「CP932」「MS932」とも呼ばれます。
*2 コンピュータが文字を扱う際の内部的な数値
 
Version Information
Ver.4.2、Ver.4.1、Ver.4.0
目的別で検索
トラブルシューティング