我想编写一个Clojure函数,将一个编码的字符串转换为另一个编码。这可以使用iconv库实现。
例如,让我们看看字符"è"。在ISO-8859-1(http://www.ascii-code.com/)中,它的十六进制表示为
所以假设我们有iso.txt,其中包含我们的字母和EOL:
现在我们可以像这样将它转换为 UTF-8:
我应该如何在Clojure中编写等效的东西?我很乐意使用任何外部库,但我不知道去哪里找到它们。看了一下,我无法弄清楚如何在JVM上直接使用libiconv本身,但可能有其他选择? 编辑 在阅读了评论中Alex的链接后,这非常简单且很酷:
例如,让我们看看字符"è"。在ISO-8859-1(http://www.ascii-code.com/)中,它的十六进制表示为
e8
。在UTF-8(http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=%C3%A8&mode=char)中,它是c3 a8
。所以假设我们有iso.txt,其中包含我们的字母和EOL:
$ hexdump iso.txt
0000000 e8 0a
0000002
现在我们可以像这样将它转换为 UTF-8:
$ iconv -f ISO-8859-1 -t UTF-8 iso.txt | hexdump
0000000 c3 a8 0a
0000003
我应该如何在Clojure中编写等效的东西?我很乐意使用任何外部库,但我不知道去哪里找到它们。看了一下,我无法弄清楚如何在JVM上直接使用libiconv本身,但可能有其他选择? 编辑 在阅读了评论中Alex的链接后,这非常简单且很酷:
user> (new String (byte-array 2 (map unchecked-byte [0xc3 0xa8])) "UTF-8")
"è"
user> (new String (byte-array 1 [(unchecked-byte 0xe8)]) "ISO-8859-1")
"è"
e8
转换为Unicode字符'è'的字符串? - spike