XML データを表示する -LiveCode備忘録

日本語のデータを表示する

answer file "取り込むXMLファイルはどこですか"   
    put it into tFile 
    --ファイルを変数に読み込み
    put url("file:"&tFile) into tUrl
    put tUrl into tFile--デコードしない
     put revCreateXMLTree(tFile,false,true,false) into tgTree  
    --デコードしないと内容をフィールドに入れた時に文字化けする
    put tUrl into field “data"

左のようなスクリプトを書いたとして、その結果がどうなるか調べてみよう。
結果は

<?xml version=”1.0″?>
<伝票>
  <Ê󕉪ò date=”1/1/2021″>
    <ÂÄüÊñπÁßëÁõÆ>&#x901A;&#x4FE1;&#x8CBB;</ÂÄüÊñπÁßëÁõÆ>
    <Ë≤∏ÊñπÁßëÁõÆ>&#x672A;&#x6255;&#x91D1;</Ë≤∏ÊñπÁßëÁõÆ>
    <Êëò˶Å>&#x30AA;&#x30D7;&#x30C6;&#x30FC;&#x30B8;</Êëò˶Å>

の、ように文字化けしてしまう。

answer file "取り込むXMLファイルはどこですか"   
    put it into tFile 
    --ファイルを変数に読み込み
    put url("file:"&tFile) into tUrl
    put tUrl into tFile--デコードしない
     put revCreateXMLTree(tFile,false,true,false) into tgTree  
 --デコードする
   put textDecode(tUrl,"utf8") into field "data3"
 

そこで、LiveCodeで2バイト文字を扱うのと同じようにデコードしてみる。
結果は (field data3)

<?xml version=”1.0″?>
  <伝票>
     <日付 date=”1/1/2021″>
       <借方科目>&#x901A;&#x4FE1;&#x8CBB;</借方科目>
       <貸方科目>&#x672A;&#x6255;&#x91D1;</貸方科目>
    <摘要>&#x30AA;&#x30D7;&#x30C6;&#x30FC;&#x30B8;</摘要>
       <備考>mineo</備考>

だいぶ理解できるようになってきたが、ラベルはデコードされているが
内容が文字化けしている。

answer file "取り込むXMLファイルはどこですか"   
    put it into tFile 
    --ファイルを変数に読み込み
    put url("file:"&tFile) into tUrl
    put tUrl into tFile--デコードしない
     put revCreateXMLTree(tFile,false,true,false) into tgTree  
 put textDecode(revXMLText(tgTree,"/",true),"utf8") into field "data4"    --ここでデコード
 

一旦メモリーに展開した(revCreateXMLTree)ファイルを
XMLテキストにしてからデコードする[textDecode(revXMLText(tgTree,”/”,true),”utf8″)]
これでも属性指定したもの(AttributeValues)の2バイト文字は文字化けする。下の例でいうとdate=の部分。これは半角数字なので文字化けしていない。
ただし、フィールドに表示するのでなければ、無理にデコードしなくても使える場合がある。ファールドに表示して文字化けしていても、revXMLMatchingNodeでの検索には引っかかる。
結果は (field data4)

<?xml version=”1.0″?>
<伝票>
  <日付 date=”1/1/2021″>
    <借方科目>通信費</借方科目>
    <貸方科目>未払金</貸方科目>
    <摘要>オプテージ</摘要>
    <備考>mineo</備考>

タイトルとURLをコピーしました