Come posso convertire una stringa UCS2 in UTF8?
Domanda
Come convertire una stringa che si trova in UCS2 (2 byte per carattere) in una stringa UTF8 in Ruby?
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