如何将BOM表写入快速流?我需要它来将文件导出到excel。
我做了什么,但是没用(输出中写入的数据错误):
let BOM = "\u{FEFF}"
var path = docPath + "/list.csv"
let stream = OutputStream(toFileAtPath: path, append: false)
stream?.open()
var i1:UInt8=254
var i2:UInt8=255
stream?.write(&i1, maxLength: 1)
stream?.write(&i2, maxLength: 1)
答案 0 :(得分:1)
尝试类似这样的方法。假设您要为MS-Excel在UTF-8中创建 CSV文件。
var path = docPath + "/list.csv"
if let stream = OutputStream(toFileAtPath: path, append: false) {
stream.open()
let BOM = "\u{FEFF}"
stream.write(BOM, maxLength: 3) //BOM in UTF-8 is made of 3 bytes.
//...
} else {
print("Failed to create OutputStream:", path)
}
通过将Swift字符串直接传递到write(_:maxLength:)
(第一个参数的类型为UnsafePointer<UInt8>
),Swift会生成String的临时UTF-8表示形式,因此如果您想在UTF-8中创建一个文件。
使用此代码时,需要以UTF-8输出所有项目,并且某些项目需要转义。希望您对这些事情都了解。
此代码可与日语本地化的MS-Excel一起使用,但是我不确定它是否可以在其他本地化版本中使用。