如何从 File#path 获取 utf8 字符
File#path
给了我 Latin-1 字符——有没有办法让它给我 utf8 字符,或者我应该转换它返回的内容?如果是这样,最好/最简单的转换方法是什么?
阐述
所以,我知道我可以这样做:
Iconv.new('UTF-8','LATIN1').iconv(File.basename(file.path))
但我想知道是否有一种更优雅的方法来告诉 File
首先给我 utf8。
这尤其重要,因为由于某种原因我在不同的系统上得到了不同的字符集。在我的 OS X 开发机器上,看起来我恢复了 utf8。在我的 Linux 服务器上,latin-1。
File#path
is giving me Latin-1 characters -- is there a way to get it to give me utf8 characters, or should I just convert what it returns? If so, what's the best/easiest way to convert?
elaboration
So, I know I can do this:
Iconv.new('UTF-8','LATIN1').iconv(File.basename(file.path))
But I'm wondering if there is a more elegant way to tell File
to give me utf8 to begin with.
This is especially important because for some reason I get back a different charset on different systems. On my OS X dev machine, it looks like I get back utf8. On my linux server, latin-1.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在文档的第一行使用神奇的注释:
Use a magic comment in a first line of your document:
请参阅 $LANG 和 $LC_CTYPE(环境变量)。
这些变量还确定 1.9 中编码默认值的默认值,因此如果您稍后将代码移植到 1.9,您今天所做的更改也将起作用。
注意 Windows 在这方面略有不同,因此您可能需要更多信息来解决这个问题。
See $LANG and $LC_CTYPE (environment variables).
These variables also determine the default value for the encoding defaults in 1.9, and so changes you make today will also work if you later port your code to 1.9.
N.B. Windows is a slightly different beast in this regard, so you may need further information to tackle that.