Ruby 应用路径中的rake和utf-8字符

Ruby 应用路径中的rake和utf-8字符,ruby,utf-8,rake,Ruby,Utf 8,Rake,我使用了一个我使用rake编译的应用程序。问题是,如果我将应用程序目录设置在包含非US-ASCII字符的路径中,编译将失败 例如: cd /home/user/Downloads/my_app rake ==>它可以工作 cd /home/user/Téléchargements/my_app rake ==>它不起作用 我的系统是完整的utf-8 我怎样才能避免这种情况 关于信息,我尝试编译的应用程序很微妙: hg clone http://hg.subforge.org/subtle

我使用了一个我使用rake编译的应用程序。问题是,如果我将应用程序目录设置在包含非US-ASCII字符的路径中,编译将失败

例如:

cd /home/user/Downloads/my_app
rake 
==>它可以工作

cd /home/user/Téléchargements/my_app
rake
==>它不起作用

我的系统是完整的utf-8

我怎样才能避免这种情况

关于信息,我尝试编译的应用程序很微妙:

hg clone http://hg.subforge.org/subtle
cd subtle
rake
下面是完整的错误消息:

** Invoke default (first_time)
** Invoke config (first_time)
** Execute config
checking for stdio.h... yes
checking for stdlib.h... yes
checking for stdarg.h... yes
checking for string.h... yes
checking for unistd.h... yes
checking for signal.h... yes
checking for errno.h... yes
checking for assert.h... yes
checking for sys/time.h... yes
checking for sys/types.h... yes
checking for sys/inotify.h... yes
checking for wordexp.h... yes
rake aborted!
invalid byte sequence in US-ASCII
/usr/lib/ruby/1.9.1/mkmf.rb:785:in `[]'
/usr/lib/ruby/1.9.1/mkmf.rb:785:in `checking_for'
/home/silkmoth/Téléchargements/subtle/Rakefile:335:in `block in <top (required)>'
/usr/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/lib/ruby/1.9.1/rake/task.rb:176:in `block in invoke_prerequisites'
/usr/lib/ruby/1.9.1/rake/task.rb:174:in `each'
/usr/lib/ruby/1.9.1/rake/task.rb:174:in `invoke_prerequisites'
/usr/lib/ruby/1.9.1/rake/task.rb:157:in `block in invoke_with_call_chain'
/usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/bin/rake:32:in `<main>'
Tasks: TOP => default => config
**调用默认值(第一次)
**调用配置(第一次)
**执行配置
正在检查stdio.h。。。对
正在检查stdlib.h。。。对
正在检查标准h。。。对
正在检查字符串。h。。。对
正在检查unistd.h。。。对
正在检查信号。h。。。对
正在检查错误号h。。。对
正在检查assert.h。。。对
正在检查sys/time.h。。。对
正在检查sys/types.h。。。对
正在检查sys/inotify.h。。。对
正在检查wordexp.h。。。对
雷克流产了!
US-ASCII中的字节序列无效
/usr/lib/ruby/1.9.1/mkmf.rb:785:in`[]'
/usr/lib/ruby/1.9.1/mkmf.rb:785:in'checking_'
/home/silkmoth/Téléchargements/微妙/Rakefile:335:in'block in'
/usr/lib/ruby/1.9.1/rake/task.rb:205:in'call'
/usr/lib/ruby/1.9.1/rake/task.rb:205:in'block in execute'
/usr/lib/ruby/1.9.1/rake/task.rb:200:in'each'
/usr/lib/ruby/1.9.1/rake/task.rb:200:in'execute'
/usr/lib/ruby/1.9.1/rake/task.rb:158:in`block in invoke_with_call_chain'
/usr/lib/ruby/1.9.1/monitor.rb:211:in'mon_synchronize'
/usr/lib/ruby/1.9.1/rake/task.rb:151:in'invoke_with_call_chain'
/usr/lib/ruby/1.9.1/rake/task.rb:176:in`block-in-invoke_前提条件'
/usr/lib/ruby/1.9.1/rake/task.rb:174:in'each'
/usr/lib/ruby/1.9.1/rake/task.rb:174:in“invoke_前提条件”
/usr/lib/ruby/1.9.1/rake/task.rb:157:in'block in invoke_with_call_chain'
/usr/lib/ruby/1.9.1/monitor.rb:211:in'mon_synchronize'
/usr/lib/ruby/1.9.1/rake/task.rb:151:in'invoke_with_call_chain'
/usr/lib/ruby/1.9.1/rake/task.rb:144:in'invoke'
/usr/lib/ruby/1.9.1/rake/application.rb:116:in'invoke_task'
/usr/lib/ruby/1.9.1/rake/application.rb:94:in'block(2层)in top_level'
/usr/lib/ruby/1.9.1/rake/application.rb:94:in'each'
/usr/lib/ruby/1.9.1/rake/application.rb:94:in'block in top_level'
/usr/lib/ruby/1.9.1/rake/application.rb:133:在“标准异常处理”中
/usr/lib/ruby/1.9.1/rake/application.rb:88:“顶级”
/usr/lib/ruby/1.9.1/rake/application.rb:66:in'block in run'
/usr/lib/ruby/1.9.1/rake/application.rb:133:在“标准异常处理”中
/usr/lib/ruby/1.9.1/rake/application.rb:63:in'run'
/usr/bin/rake:32:in`'
任务:TOP=>default=>config

问题不在于文件的编码,而在于路径中的非ascii符号(“Téléchargements”)

显然,例外情况发生在#检查#785行上mkmf与rake的结合中。作为Rakefile的作者,除了报告上游和/或找到一种方法来避免这种方法之外,我对此无能为力


快速修复方法是使用不带非ascii符号的路径,对不起。

这是哪个Ruby版本?MRI 1.9在字符编码支持方面引入了很多改进。我的ruby版本是ruby 1.9.3p0。信息不足。Rake在这样的目录中对我来说很好。您的一个rake任务必须执行一些不兼容的操作。“有效”和“无效”都不足以帮助你。尝试使用
rake--trace
运行以获得完整的堆栈跟踪和错误消息。好的,下面是错误消息:您的代码中有UTF-8字符吗?