Ruby 1.9中的Unicode字符串
我编写了一个Ruby脚本,它正在读取一个包含unicode字符的文件(Ruby 1.9中的Unicode字符串,ruby,unicode,text-processing,Ruby,Unicode,Text Processing,我编写了一个Ruby脚本,它正在读取一个包含unicode字符的文件(file.read()),并且可以在命令行中正常工作 然而,当我尝试将其放入自动工作流程(MacOSX)时,我得到了这个错误 2009-12-23 17:55:15 -0500: /Users/jeffreyaylesworth/bin/symbols:19:in `split': invalid byte sequence in US-ASCII (ArgumentError) (traceback) 所以当从Automa
file.read()
),并且可以在命令行中正常工作
然而,当我尝试将其放入自动工作流程(MacOSX)时,我得到了这个错误
2009-12-23 17:55:15 -0500: /Users/jeffreyaylesworth/bin/symbols:19:in `split': invalid byte sequence in US-ASCII (ArgumentError)
(traceback)
所以当从Automator运行时,split突然不喜欢非ASCII字符。据我所知,两者都是从同一版本的Ruby运行的(版本号相同)
我不太关心为什么它们的行为不同(但如果有人知道,那就太好了),但我希望有一个解决方案,使split接受非ASCII字符
如果有帮助的话,我需要将单个字符的文本分成两部分,这样如果类似于C的标记器的东西可以工作,我就可以使用它。听起来这两个字符是从不同的环境中运行的-具有不同的语言环境值。您没有指定文件的编码。由于无法可靠地自动确定文件的编码,因此必须明确指定编码。如果未指定,则使用外部编码;如果未设置外部编码,则将使用环境中指定的编码;如果环境未指定编码,则假定文件为7位US-ASCII格式 在您的案例中,这两种环境(自动脚本通常在没有区域设置的非常严格的环境中运行)或解释器的调用方式似乎有所不同 所以,你需要做一些类似的事情
File.read('/path/to/file', encoding: 'UTF-8')