日本語のデータを表示する
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″>
<ÂÄüÊñπÁßëÁõÆ>通信費</ÂÄüÊñπÁßëÁõÆ>
<Ë≤∏ÊñπÁßëÁõÆ>未払金</Ë≤∏ÊñπÁßëÁõÆ>
<Êëò˶Å>オプテージ</Êëò˶Å>
の、ように文字化けしてしまう。
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″>
<借方科目>通信費</借方科目>
<貸方科目>未払金</貸方科目>
<摘要>オプテージ</摘要>
<備考>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</備考>