2011年9月9日 星期五

UniCode - 銀行檔案TXT檔錯位

因錯位的欄位會出現在中文字的後一個欄位
所以需要算出原本8300的字元數與4110的字元數差異後
才知道下一欄要放多少位移數。

Ex:
t_text+57(40) = field.
之後要計算 下一個欄位要開始的位置~

call function 'SCMS_STRING_TO_XSTRING'
    exporting
      text     = field      --->  中英文混雜字串
      mimetype = 'C'
      encoding = '8300'   ---> 以8300 編碼轉換
    importing
      buffer   = out_str.   -->轉換出來的文字字串

  len_in_byte = xstrlen( out_str ).      >計算出8300的長度

     len_in_char =  strlen( field ).   ---> unicode長度
  diff = len_in_byte - len_in_char.    ----> 計算 unicode 與非 unicode 長度差異
                                                                         unicode 長度<=編碼8300的長度
  pos = 57 + ( 40  - diff )  .  ---> 計算下一個欄位的位置
 所以下一個欄位
t_text+pos(n) = xxxx.

沒有留言:

張貼留言