2012-07-31 59 views
5

在Pharo 1.4中,我在文本文件上打开了FileSystemReadStream,并通过aFileSystemReadStream contents asString将其转换为字符串。如何从Pharo 1.4中的FileSystemReadStream正确解码文本文件

我的文本文件采用UTF8编码,并具有这些Windows(CR LF)换行符。

得到的菲罗字符串有每个文本文件线两条换行符和一些奇怪的字符,而不是像A,O,德国的变音符号Ü等

我怎样才能正确地解码菲罗我的文本文件?

回答

8

不要在1.4中使用FileSystemReadStreams,它们不是完整的和错误的;)。改用FileStream。

multiByteFileStream := FileStream fileNamed: '/foo/bar.txt'. 
multiByteFileStream contents. 

它会返回一个MultiByteFileStream在这里你可以设置行结束约定和编码:

multiByteFileStream 
    "possible values are: #cr #lf #crlf" 
    lineEndConvention: #cr; 
    "set a specific converter, see subclasses of TextConverter" 
    converter: UTF8TextConverter new. 
+0

可以multiByteFileStream与文件系统的其余部分进行组合,或者必须将它与旧的“文件”中使用文件系统? – 2012-07-31 12:22:44

+2

在Pharo 2.0中,我们重写了'FileSystem'以使用“旧”流。否则,在'FileReference'上添加一个扩展方法,它执行类似'^ FileStream fileNamed:self fullName'的操作 – camillobruni 2012-07-31 13:08:25