You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pharo/Smalltalk技术问询:如何读取特定编码的文件?

读取指定编码文件的Smalltalk解决方案

嘿,这个问题我太懂了!你现在的代码之所以能正常处理UTF-8文件,是因为readStream方法默认就用UTF-8编码来解析内容。要读取其他编码的文件,只需要换个方法,显式指定编码格式就搞定了。

核心修改思路

不用默认的readStream,改用readStreamEncoded:方法,把你需要的编码作为参数传进去就行。

具体示例

比如要读取GBK编码的test.txt,代码可以改成这样:

dir := FileSystem disk workingDirectory.
stream := (dir / 'test.txt') readStreamEncoded: #GBK.
line := stream nextLine.

常见编码的写法参考

  • 读取Latin1(ISO-8859-1,西欧常用编码):
stream := (dir / 'test.txt') readStreamEncoded: #Latin1.
  • 读取UTF-16编码:
stream := (dir / 'test.txt') readStreamEncoded: #UTF16.
  • 读取Shift-JIS(日文场景常用):
stream := (dir / 'test.txt') readStreamEncoded: #ShiftJIS.

小提醒

要是不确定文件到底是什么编码,可以先用文本编辑器(比如VS Code)打开文件查看编码,或者用系统命令行工具检测。另外,主流Smalltalk环境(比如Pharo)基本支持所有常见的国际编码,不用担心兼容性问题~

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:42:23