粗茶でございます日本語 プログラミング 言語 「なでしこ」 大好き 

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://nadesocha.blog.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | ホーム | ↑ ページ先頭へ ↑ |

文字化けを悩む。

   ↑  2009/09/07 (月)  カテゴリー: 未分類

 なでしこからLuaを呼び出して、Excelのファイルを開こうとしてみましたが、ファイル名やパスに日本語が混じると文字化けして、どうもうまくいきません。

LUA(`
require('luacom')
excel = luacom.CreateObject("Excel.Application") -- Excelオブジェクトを作成
excel.Visible = true -- オン
excel.Workbooks:Open("テスト用.xlsx") -- 文字化け
`)

 日本語化パッチを当てないとダメ?

 それとも全然別の理由???

 解決方法の分かる方、ヘルプミー!

その後

 クジラさんにも確認したのですが、やはり日本語を扱う部分で問題があるようです。(T-T)

 日本語化パッチは関係なかったみたい。"Lua.com"内の問題らしいです。


 解決されるまで、様子を見た方がいいのかな・・・

さらにその後

 なでおやじさんのアドバイスで、なんとか日本語を扱えるかも!


 LUAの文字列はUTF-8を扱うことは知っていたんですが、次の2点でハマっていました。

  • 1.なでしこからLUAへ文字列を渡したときは、自動的にUTF-8に変換されているはずだと思っていた。Delphi2009でUTF8とstringの変換
  • 2.なでしこの文字列変換には、"SJIS_UTF8N変換","SJIS_UTF8N変換","UTF8変換","UTF8N変換"があり、それぞれの違いを理解していなかった。(今も理解していない)

 だから、LUAへそのまま文字列を渡していた私が悪かったんですね。


 なでおやじさんの教えてくれた"SJIS_UTF8N変換"命令を使って、ちょっと作り直してみたのが、下記のプログラムです。

LUA(`
require('luacom')
function test(V)
  print (V)
  excel = luacom.CreateObject("Excel.Application") -- Excelオブジェクトを作成
  excel.Visible = true -- オン
  excel.Workbooks:Open(V)
end
`)
S=「{母艦パス}テスト用.xlsx」の「\」を「\\」へ置換してSJIS_UTF8N変換したもの。
LUA("test('{S}')")

 LUAでは、"\"(円マークまたはバックスラッシュ)がエスケープ文字と見なされるため、ファイルのパスを渡すときに"\\"に置換しています。

 printで文字列の中身を確認していますが、やっぱりWindowsはSJISなので、文字化けしてますね。ということは、LUAにファイルパスを渡して、ファイル名を表示とファイルを開くを同時に行うには、どうすればいいのかなぁ。


 でも、文字列やパスを渡すときに、毎回こんな処理をしなければならないのかなぁ。

 もっといい方法があればなぁ・・・   、とさらに情報を集めてみたりして(笑)

関連記事

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-63.html

2009/09/07 | Comment (2) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

Comment


EMAIL:
IP:
こんにちわ!
PAS="テスト用.xlsx"をSJIS_UTF8N変換
中略
excel.Workbooks:Open(nako_get"PAS")
で出来ましたよ^^

なでおやじ |  2009/09/07 (月) 18:18 [ 編集 ] No.1


EMAIL:
IP:
なでおやじさん、ありがとうございます!
"SJIS_UTF8N変換"命令だったんですね!

粗茶@なでしこ |  2009/09/07 (月) 21:52 [ 編集 ] No.2

コメント:を投稿する 記事: 文字化けを悩む。

お気軽にコメント:をぞうぞ。
非公開 (管理人のみ閲覧可能なコメント:) にしたい場合には、ロック にチェックを入れてください。

  任意 : 後から修正や削除ができます。
  非公開コメント:として投稿する。(管理人にのみ公開)

Trackback

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。