从这里可以了解到,Squeak从3.8开始支持Unicode。那篇文章里说明的是Seaside中对编码的处理,这是Seaside经过包装的。而Squeak本身对于Unicode的支持的说明可以看这里,从中可以了解到的一个重要信息是,Squeak中对所有字符都以Unicode表示。
那么对于文件的读写,Squeak又是如何处理的呢?这就需要看看MultiByteFileStream和StandardFileStream了,而CrLfFileStream已经被MultiByteFileStream取代,不需要再考虑。(实际上是它现在基于MultiByteFileStream实现)。
在MultiByteFileStream的注释中可以看到这样一段话:
The interface of this object is similar to good old StandardFileStream, but internally it asks the converter, which is a sub-instance of TextConverter, and do the text conversion.
也就是说MultiByteFileStream会有编码的转化,而StandardFileStream则不进行转化。具体MultiByteFileStream对于converter的设置可以看MultiByteFileStream class>>open:forWrite:
实现(该函数会被StandardFileStream class>>readOnlyFileNamed:
等函数调用),可以发现,系统默认以UTF-8格式读取文件。
另外,String类中还有squeakToUtf8及utf8ToSqueak方法可以进行方便的编码转化。