Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 1.9中的Unicode字符串_Ruby_Unicode_Text Processing - Fatal编程技术网

Ruby 1.9中的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

我编写了一个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)
所以当从Automator运行时,split突然不喜欢非ASCII字符。据我所知,两者都是从同一版本的Ruby运行的(版本号相同)

我不太关心为什么它们的行为不同(但如果有人知道,那就太好了),但我希望有一个解决方案,使split接受非ASCII字符


如果有帮助的话,我需要将单个字符的文本分成两部分,这样如果类似于C的标记器的东西可以工作,我就可以使用它。

听起来这两个字符是从不同的环境中运行的-具有不同的语言环境值。

您没有指定文件的编码。由于无法可靠地自动确定文件的编码,因此必须明确指定编码。如果未指定,则使用外部编码;如果未设置外部编码,则将使用环境中指定的编码;如果环境未指定编码,则假定文件为7位US-ASCII格式

在您的案例中,这两种环境(自动脚本通常在没有区域设置的非常严格的环境中运行)或解释器的调用方式似乎有所不同

所以,你需要做一些类似的事情

File.read('/path/to/file', encoding: 'UTF-8')