QA@IT
«回答へ戻る

バグ依存だったノウハウを修正

1138
 http://www.ruby-doc.org/core-1.9.3/String.html#method-i-encode
 
 ~~~ruby
-str.encode("UTF-8", "UTF-8",
+str.encode("UTF-16BE", "UTF-8",
            invalid: :replace,
            undef: :replace,
-           replace: '.')
+           replace: '.').encode("UTF-8")
 ~~~
 
 とすれば、invalidな部分だけ `.` に置換されます。
-
-`Kconv` など外部ライブラリでエンコーディングを変換するとエラーが出づらいというのが私の経験則です。

実際にinvalidなものが含まれてしまっている場合には、そこの文字列をピリオドやはてなマークなど、別の文字に置き換えることで対処できます。

具体的には、String#encode を使います。
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-encode

str.encode("UTF-16BE", "UTF-8",
           invalid: :replace,
           undef: :replace,
           replace: '.').encode("UTF-8")

とすれば、invalidな部分だけ . に置換されます。

実際にinvalidなものが含まれてしまっている場合には、そこの文字列をピリオドやはてなマークなど、別の文字に置き換えることで対処できます。

具体的には、`String#encode` を使います。
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-encode

~~~ruby
str.encode("UTF-16BE", "UTF-8",
           invalid: :replace,
           undef: :replace,
           replace: '.').encode("UTF-8")
~~~

とすれば、invalidな部分だけ `.` に置換されます。

回答を投稿

実際にinvalidなものが含まれてしまっている場合には、そこの文字列をピリオドやはてなマークなど、別の文字に置き換えることで対処できます。

具体的には、String#encode を使います。
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-encode

str.encode("UTF-8", "UTF-8",
           invalid: :replace,
           undef: :replace,
           replace: '.')

とすれば、invalidな部分だけ . に置換されます。

Kconv など外部ライブラリでエンコーディングを変換するとエラーが出づらいというのが私の経験則です。

実際にinvalidなものが含まれてしまっている場合には、そこの文字列をピリオドやはてなマークなど、別の文字に置き換えることで対処できます。

具体的には、`String#encode` を使います。
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-encode

~~~ruby
str.encode("UTF-8", "UTF-8",
           invalid: :replace,
           undef: :replace,
           replace: '.')
~~~

とすれば、invalidな部分だけ `.` に置換されます。

`Kconv` など外部ライブラリでエンコーディングを変換するとエラーが出づらいというのが私の経験則です。