teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/11/25 15:43

投稿

asm
asm

スコア15149

answer CHANGED
@@ -5,4 +5,55 @@
5
5
  STDIN.set_encoding 'locale', Encoding.default_internal || 'external'
6
6
  ```
7
7
 
8
- この2行をスクリプトの頭につけると大抵の場合うまく行きます。
8
+ この2行をスクリプトの頭につけると大抵の場合うまく行きます。
9
+
10
+ ---
11
+
12
+ 簡単なテストですが
13
+
14
+ ```ruby
15
+ fruits = {
16
+ 'apple' => 'りんご',
17
+ 'banana' => 'バナナ',
18
+ 'grape' => 'ぶどう',
19
+ }
20
+
21
+
22
+ same = __ENCODING__
23
+ other = same == Encoding::UTF_8 ? "cp932" : "utf-8"
24
+
25
+ puts <<~EOS
26
+ __ENCODING__ = #{__ENCODING__}
27
+ default_internal = #{Encoding.default_internal}
28
+ default_external = #{Encoding.default_external}
29
+ "あ".inspect.encoding = #{"あ".inspect.encoding}
30
+ EOS
31
+
32
+ puts fruits
33
+
34
+ puts "-" * 50
35
+ Encoding.default_internal = other
36
+ Encoding.default_external = same
37
+
38
+ puts <<~EOS
39
+ __ENCODING__ = #{__ENCODING__}
40
+ default_internal = #{Encoding.default_internal}
41
+ default_external = #{Encoding.default_external}
42
+ "あ".inspect.encoding = #{"あ".inspect.encoding}
43
+ EOS
44
+
45
+ puts fruits
46
+
47
+ puts "-" * 50
48
+ Encoding.default_internal = same
49
+ Encoding.default_external = other
50
+
51
+ puts <<~EOS
52
+ __ENCODING__ = #{__ENCODING__}
53
+ default_internal = #{Encoding.default_internal}
54
+ default_external = #{Encoding.default_external}
55
+ "あ".inspect.encoding = #{"あ".inspect.encoding}
56
+ EOS
57
+
58
+ puts fruits
59
+ ```