Squeak文件编码

这里可以了解到,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方法可以进行方便的编码转化。

Advertisements
此条目发表在Uncategorized分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s