How do I convert a UCS2 string into UTF8?

前端 未结 3 353
野趣味
野趣味 2021-01-14 14:48

How to convert a string that is in UCS2 (2 bytes per character) into a UTF8 string in Ruby?

相关标签:
3条回答
  • 2021-01-14 15:35

    You should look into iconv, which is part of the Ruby standard library. It is designed for this task.

    Specifically,

     Iconv.iconv("utf-8", "utf-16", str).first
    

    should handle the conversion.

    0 讨论(0)
  • 2021-01-14 15:39

    Because chars in most cases string in UCS2 encoding can be represented as UTF-16 string (in UTF-16 char with codes bigger than 0x10000 is rarely used) I think use of Iconv is better way to convert strings. Sample code:

    require 'iconv'
    
    ic = Iconv.new 'UTF-8', 'UTF-16'
    utf8string = ic.iconv ucs2string
    
    0 讨论(0)
  • 2021-01-14 15:42

    With Ruby 1.9:

    string.encode("utf-8")
    

    If the string encoding is not known, you may need to set it first:

    string.force_encoding("utf-16be").encode("utf-8") # Big-endian
    string.force_encoding("utf-16le").encode("utf-8") # Little-endian
    
    0 讨论(0)
提交回复
热议问题