character-encoding - 使用 Rebol 3 执行文件编码转换

标签 character-encoding rebol file-conversion rebol3

我想使用 Rebol 3 读取 Latin1 中的文件并将其转换为 UTF-8。是否有我可以使用的内置函数或一些外部库?我在哪里可以找到它?

最佳答案

Rebol 有一个 invalid-utf? 函数,用于搜索不是有效 UTF-8 序列一部分的字节的二进制值。我们可以循环直到找到并替换所有这些,然后将我们的二进制值转换为字符串:

latin1-to-utf8: function [binary [binary!]][
    mark: :binary
    while [mark: invalid-utf? mark][
        change/part mark to char! mark/1 1
    ]
    to string! binary
]

此函数修改原始二进制文件。我们可以创建一个新的字符串来代替二进制值:
latin1-to-utf8: function [binary [binary!]][
    mark: :binary
    to string! rejoin collect [
        while [mark: invalid-utf? binary][
            keep copy/part binary mark  ; keeps the portion up to the bad byte
            keep to char! mark/1        ; converts the bad byte to good bytes
            binary: next mark           ; set the series beyond the bad byte
        ]
        keep binary                     ; keep whatever is remaining
    ]
]

奖励:这是上面的一个 Rebmu 版本——rebmu/args snippet #{DECAFBAD},其中 snippet 是:
; modifying
IUgetLOAD"invalid-utf?"MaWT[MiuM][MisMtcTKm]tsA

; copying
IUgetLOAD"invalid-utf?"MaTSrjCT[wt[MiuA][kp copy/partAmKPtcFm AnxM]kpA]

关于character-encoding - 使用 Rebol 3 执行文件编码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21716201/

相关文章:

bash - 如何使用 shell 脚本将多个文件从 mp4 转换为 flv

mysql - character_set_filesystem 不存在于显示变量中

encryption - 如何将二进制私钥文件转换为openssl可接受的pem格式

pdf - 在 Imagemagick 中转换图像时出错

rebol - 如何在另一个命名模块中使用单词?

recursion - 打破递归函数

parsing - 如何解析函数参数 block ?

apache - mpdf 错误地显示 ascii<115

php - Wordpress DB 字符集从 utf8mb4 更改为 utf8 导致错误

php - PHP 文件中的 UTF-8 BOM 签名