😅

AppleScriptからRubyを実行して文字化けした話

2024/06/14に公開

AppleScriptからRubyを実行してその結果を表示したら文字化していました。
正確にはユニコードエスケープされた状態で表示されました。

期待-->"123億4500万0000"
表示-->"123\u51044500\u4E070000"

Rubyをターミナルで実行すると期待通り"123億4500万0000"と表示されます。

AppleScript側でユニコードエスケープをデコードできないか色々試した結果、原因はRubyのコードにあることが分かりました。

Rubyコードの結果出力をデバッグ等で使用する"p"から一般的な出力の"puts"に変えることで期待通り"123億4500万0000"と表示される様になりました。

p hyakuman(ARGV[0])     #誤 --> "123\u51044500\u4E070000"
puts hyakuman(ARGV[0])  #正 --> "123億4500万0000"

AppleScriptからRubyのスクリプトを実行する

-- AppleScriptからRubyのスクリプトを実行する
set dialogTitle to "百万円単位の数字を分かりやすく変換する"
set textField to display dialog "数値を入力してください" with title dialogTitle default answer ""
set val to text returned of textField

property which_ruby : "/Users/ユーザー名/.rbenv/shims/ruby"
set res to do shell script which_ruby & " /Users/ユーザー名/myapp/hyakuman.rb " & val

display alert res

Discussion