###前提・実現したいこと
エスケープされた文字列を通常の文字に変換したい。
###発生している問題・エラーメッセージ
Rubyのコマンライン引数に誤ってUTF8がエスープされて入力されてしまうことがあります。しかも\uXXXXXXではなく\xZZ\xZZ\xZZの形で
下記のサンプルコードで示したように、ダブルクオーテーションで囲まれれば正しく表示される文字(例:場所、変数aで示した)がコマンドライン引数に入ってくる予定が、エスケープシーケンスとして引数に入ってしまいます(変数bで示した)
このbを「場所」として変換したいのです。
再現のためのサンプルコード
ruby
1#!/usr/bin/env ruby 2# -*- encoding:utf-8 -*- 3# 4 5a = "\xE5\xA0\xB4\xE6\x89\x80" #-> 場所 6b = '\xE5\xA0\xB4\xE6\x89\x80' #-> \xE5\xA0\xB4\xE6\x89\x80 7puts a, b 8 9p b.unpack( "U*" ) 10c = [0xE5, 0xA0, 0xB4, 0xE6, 0x89, 0x80] 11puts c.pack( "U*" ) 12c = [0xE5A0B4, 0xE68980] 13puts c.pack( "U*" )
###試したこと
上記のコード中で試してます。
unpackで試しましたがうまくいきませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Ruby 2.0、macOS sierra
ビッグエンディアンかリトルエンディアンかは不明です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/23 09:16
退会済みユーザー
2017/05/23 09:20