YAML एन्कोडिंग सरल तार का एक उदाहरण संस्करण 1.9.3p125, माणिक के बाद है:
उदाहरण के लिए, यह मैं कैसे सांकेतिक शब्दों में बदलना मेरे विकल्प YAML में हैश है बिल्ड-इन वाईएएमएल इंजन पहले से पहले सभी बिनरी एन्कोडिंग का इलाज करेगा। आपको बस अपनी स्ट्रिंग.to_yaml से पहले सही गैर-बिनरी एन्कोडिंग सेट करना है।
रूबी 1.9 में, सभी स्ट्रिंग वस्तु एक एन्कोडिंग वस्तु संलग्न किया है और के रूप में ब्लॉग (जेम्स एडवर्ड ग्रे द्वितीय द्वारा) निम्नलिखित उल्लेख किया है, माणिक जब स्ट्रिंग उत्पन्न होता है एन्कोडिंग के तीन प्रकार में निर्माण किया है: http://blog.grayproductions.net/articles/ruby_19s_three_default_encodings।
एन्कोडिंग में से एक आपकी समस्या का समाधान हो सकता है => स्रोत कोड एन्कोडिंग
यह अपने स्रोत कोड की एन्कोडिंग है, और पहली पंक्ति या दूसरी पंक्ति में जादू एन्कोडिंग स्ट्रिंग जोड़ने (यदि आप एक है द्वारा निर्दिष्ट किया जा सकता है SHA-धमाके के अपने स्रोत कोड की पहली पंक्ति में स्ट्रिंग) जादू एन्कोडिंग कोड निम्न में से एक हो सकता है:
- # एन्कोडिंग: utf-8
- # कोडिंग: utf-8
- # - - एन्कोडिंग: utf-8 - -
तो आपके मामले में, यदि आप गहरे लाल रंग का 1.9.3p125 या बाद में उपयोग करते हैं, यह अपने कोड की शुरुआत में जादू एन्कोडिंग में से एक जोड़कर हल किया जाना चाहिए।
# encoding: utf-8
require 'thor'
class Foo < Thor
include Thor::Actions
desc "bar", "test"
def bar
test = {"name" => "Xavier", "age" => 30}
puts test
#{"name"=>"Xavier", "age"=>30}
puts test["name"].encoding.name
#UTF-8
puts test.to_yaml
#---
#name: Xavier
#age: 30
puts test.to_yaml.encoding.name
#UTF-8
end
end
स्रोत
2012-10-20 07:20:19
मैं सिर्फ अपने उदाहरण भाग गया और यह मुझे बिल्कुल ठीक उत्पादन दे दी है। मैं thor 0.14.6 भाग गया। – Maran
चेक करने के लिए समय निकालने के लिए धन्यवाद। मैं इस बिंदु पर क्या करना है इसके नुकसान में हूं। मैं रूबी 1.9.3 पी 125 का उपयोग कर रहा हूं अगर इससे कोई फर्क पड़ता है। :) – cp3
मैंने 1.9 इंस्टॉल किया।3 और इसे फिर से चलाया, और वास्तव में बाइनरी आउटपुट। मैंने देखा कि इंस्टॉल के दौरान वाईएएमएल को अपग्रेड किया गया है। यह शायद उस अपग्रेड किए गए संस्करण के साथ कुछ करने के लिए है। – Maran