将unicode/utf-8数据写入内存文件
如何将unicode/utf-8写入MemoryStore中的文件 通常我可以做以下几件事将unicode/utf-8数据写入内存文件,unicode,smalltalk,memorystream,pharo,Unicode,Smalltalk,Memorystream,Pharo,如何将unicode/utf-8写入MemoryStore中的文件 通常我可以做以下几件事 fs := FileSystem workingDirectory. file := fs / 'file.txt'. file writeStreamDo: [ :stream | stream << '彼得' ]. file contents. "'彼得'" 错误:不正确地存储到可索引对象中 因为stream有一个普通的WriteStream 我试图通过直接实例化多字节文件流来解决这个问
fs := FileSystem workingDirectory.
file := fs / 'file.txt'.
file writeStreamDo: [ :stream | stream << '彼得' ].
file contents. "'彼得'"
错误:不正确地存储到可索引对象中
因为stream
有一个普通的WriteStream
我试图通过直接实例化多字节文件流
来解决这个问题,但这似乎需要真正的文件
还有其他方法吗?这里有一个表达式可以满足您的需要:
string := '彼得'.
file writeStreamDo: [:stream |
#utf8 asZnCharacterEncoder
next: string size
putAll: string
startingAt: 1
toStream: stream]
默认情况下,内存文件系统似乎不处理多字节文件。尝试:
| fs file stream |
fs := FileSystem memory.
file := fs / 'file.txt'.
stream := MultiByteBinaryOrTextStream on: (fs open: file writable: true).
stream converter: UTF8TextConverter new.
[ stream << '彼得' ] ensure: [ stream close ].
file.
| fs文件流|
fs:=文件系统内存。
文件:=fs/'file.txt'。
stream:=MultiByteBinaryTextStream on:(fs打开:文件可写:true)。
流转换器:UTF8TextConverter新建。
[流(文件系统内存根/'foo.txt')
writeStreamDo:[:输出|
输出二进制文件。
(ZnCharacterWriteStream on:out encoding:#utf8)您试图生成什么编码?根据这一点,您可以首先通过数组
对unicode字符串
进行编码,然后将其发送到流
@LeandroCaniglia。内容应为utf8格式,然后尝试文件writeStream Next:'彼得' UTF8编码
。
| fs file stream |
fs := FileSystem memory.
file := fs / 'file.txt'.
stream := MultiByteBinaryOrTextStream on: (fs open: file writable: true).
stream converter: UTF8TextConverter new.
[ stream << '彼得' ] ensure: [ stream close ].
file.
(FileSystem memory root / 'foo.txt')
writeStreamDo: [ :out |
out binary.
(ZnCharacterWriteStream on: out encoding: #utf8) << '彼得' ].