使用UTF-8编码将字符串转换为数据是否会失败?

Max*_*Max 8 string encoding utf-8 swift

为了将String实例转换为DataSwift中的实例,您可以使用data(using:allowLossyConversion:)它返回一个可选Data实例.

nil如果编码是UTF-8(String.Encoding.utf8),这个函数的返回值是否可以?

如果返回值不能nil,那么总是强制解包这样的转换是安全的.

Mar*_*n R 19

UTF-8可以表示所有有效的Unicode代码点,因此将Swift字符串转换为UTF-8数据不会失败.

强行打开

let string = "some string .."
let data = string.data(using: .utf8)!
Run Code Online (Sandbox Code Playgroud)

是安全的.

对于.utf16或者.utf32,情况也是如此,但对于仅代表受限字符集的编码,例如.ascii.isoLatin1.

您也可以使用.utf8字符串视图来创建UTF-8数据,避免强制解包:

let string = "some string .."
let data = Data(string.utf8)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你提到`Data(string.utf8)` - 我错过了.`.nonLossyASCII`也应该有效,因为它将unicode字符转换为它们的转义序列,例如``ö".data(using:.nonLossyASCII)`=`\ 366`. (2认同)