如何检测Go中何时无法将字节转换为字符串?

编解码器

存在无效的字节序列,无法将其转换为Unicode字符串。在Go中转换为时如何检测[]bytestring

你的世界

正如Tim Cooper所述,您可以使用来测试UTF-8有效性utf8.Valid

但!您可能会认为将非UTF-8字节转换为Gostring是不可能的。实际上,“在Go中,字符串实际上是只读的字节片段”它可能包含无效的UTF-8字节,您可以打印这些字节,通过索引进行访问,甚至往返返回到[]byteWrite例如)。

Go在您的语言中有两个地方可以对进行UTF-8解码string

  • 当您执行操作时for i, r := range sr将Unicode代码点作为类型的值rune
  • 进行转换时[]rune(s),Go会将整个字符串解码为符文。

(请注意,这rune是的别名int32,而不是完全不同的类型。)

在这两种情况下,都将无效的UTF-8替换为U+FFFD替换字符保留用于此类用途。在规范部分中,有关s和其他类型之间for语句转换string的更多信息这些转换不会崩溃,因此,如果与应用程序相关,您只需要主动检查UTF-8有效性,就像您想对错误编码的输入引发错误。

由于该行为已融入语言中,因此您也可以从库中获得期望。U+FFFDutf8.RuneError并且由中的函数返回utf8

这是一个示例程序,显示Go对[]byte持有无效的UTF-8的操作:

package main

import "fmt"

func main() {
    a := []byte{0xff}
    s := string(a)
    fmt.Println(s)
    for _, r := range s {
        fmt.Println(r)
    }
    rs := []rune(s)
    fmt.Println(rs)
}

在不同的环境中,输出看起来会有所不同,但是在Playground中,


65533
[65533]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将单字节转换为字符串

来自分类Dev

为什么在Go中无法将[Size] byte转换为字符串?

来自分类Dev

无法从字节转换为字符串

来自分类Dev

将字节转换为带符号字节的字符串

来自分类Dev

如何将字符串转换为rust中的字节向量?

来自分类Dev

将字节列表转换为字节字符串

来自分类Dev

如何将字节转换为字符串?

来自分类Dev

在Perl中,如何将字节数组转换为Unicode字符串?

来自分类Dev

如何在python 2.7中将字符串转换为字节字符串

来自分类Dev

如何将字节字符串转换为字节对象

来自分类Dev

如何将代表n位的字符串转换为字节字符串?

来自分类Dev

AES-如何将字节字符串转换为字节字节字符串?

来自分类Dev

如何将字节转换为数据帧中条目的字符串(Python)?

来自分类Dev

如何将包含字节字符串的字符串转换为字节字符串

来自分类Dev

无法将字符串转换为字节

来自分类Dev

如何从字节转换为字符串?

来自分类Dev

将guid字节转换为javascript中的字符串

来自分类Dev

如何在Python 2中将字符串转换为字节

来自分类Dev

如何将字符串转换为rust中的字节向量?

来自分类Dev

如何使用高棉字符串将字符串转换为字节,反之亦然?

来自分类Dev

将ASCII中的字节内容转换为字符串

来自分类Dev

如何找到将 Unicode 字符串转换为字节字符串的新匹配位置?

来自分类Dev

无法将参数值从字符串转换为字节[]

来自分类Dev

如何将压缩(删除高位字节)字节转换为 Unicode 字符串?

来自分类Dev

将字节从for循环转换为python中的字符串

来自分类Dev

如何在python 3中将字节转换为字符串?

来自分类Dev

如何将字符串转换为字节?

来自分类Dev

如何将字节编码的字符串转换为先前的字符串值?

来自分类Dev

将字符串转换为字节字符串

Related 相关文章

  1. 1

    如何将单字节转换为字符串

  2. 2

    为什么在Go中无法将[Size] byte转换为字符串?

  3. 3

    无法从字节转换为字符串

  4. 4

    将字节转换为带符号字节的字符串

  5. 5

    如何将字符串转换为rust中的字节向量?

  6. 6

    将字节列表转换为字节字符串

  7. 7

    如何将字节转换为字符串?

  8. 8

    在Perl中,如何将字节数组转换为Unicode字符串?

  9. 9

    如何在python 2.7中将字符串转换为字节字符串

  10. 10

    如何将字节字符串转换为字节对象

  11. 11

    如何将代表n位的字符串转换为字节字符串?

  12. 12

    AES-如何将字节字符串转换为字节字节字符串?

  13. 13

    如何将字节转换为数据帧中条目的字符串(Python)?

  14. 14

    如何将包含字节字符串的字符串转换为字节字符串

  15. 15

    无法将字符串转换为字节

  16. 16

    如何从字节转换为字符串?

  17. 17

    将guid字节转换为javascript中的字符串

  18. 18

    如何在Python 2中将字符串转换为字节

  19. 19

    如何将字符串转换为rust中的字节向量?

  20. 20

    如何使用高棉字符串将字符串转换为字节,反之亦然?

  21. 21

    将ASCII中的字节内容转换为字符串

  22. 22

    如何找到将 Unicode 字符串转换为字节字符串的新匹配位置?

  23. 23

    无法将参数值从字符串转换为字节[]

  24. 24

    如何将压缩(删除高位字节)字节转换为 Unicode 字符串?

  25. 25

    将字节从for循环转换为python中的字符串

  26. 26

    如何在python 3中将字节转换为字符串?

  27. 27

    如何将字符串转换为字节?

  28. 28

    如何将字节编码的字符串转换为先前的字符串值?

  29. 29

    将字符串转换为字节字符串

热门标签

归档