Domanda

Come convertire una stringa che si trova in UCS2 (2 byte per carattere) in una stringa UTF8 in Ruby?

È stato utile?

Soluzione

Dovresti esaminare iconv , che fa parte della libreria standard di Ruby. È progettato per questo compito.

In particolare,

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

dovrebbe gestire la conversione.

Altri suggerimenti

Poiché nella maggior parte dei casi i caratteri nella stringa UCS2 possono essere rappresentati come stringa UTF-16 (nel carattere UTF-16 con codici più grandi di 0x10000 viene usato raramente) penso che l'uso di Iconv sia il modo migliore per convertire le stringhe. Codice di esempio:

require 'iconv'

ic = Iconv.new 'UTF-8', 'UTF-16'
utf8string = ic.iconv ucs2string

Con Ruby 1.9:

string.encode("utf-8")

Se la codifica della stringa non è nota, potrebbe essere necessario impostarla prima:

string.force_encoding("utf-16be").encode("utf-8") # Big-endian
string.force_encoding("utf-16le").encode("utf-8") # Little-endian
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top