gpt4 book ai didi

ruby - Powershell ISE utf8 输入与 Ruby 的不同

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:25 25 4
gpt4 key购买 nike

我发现自己不得不在 Windows 7(家庭高级版)上使用 Ruby,而且我在编码方面遇到了很多问题。只要我不需要控制台输入,我就相当不错,但现在我受阻了。

我正在使用 Powershell ISE 并执行命令 chcp 65001 使其成为 utf-8。我对 ruby​​ 程序的输入仍然与 Ruby 内部的内容不兼容。我已经使用 RubyInstaller 1.9.3 安装了 Ruby。好的,那有什么问题呢?

我写了一个简短的例子:

# encoding: UTF-8
target = ARGV[0]
puts "string constant ="+ "dupą"
puts "dupą".bytes.to_a.to_s
puts "dupą".encoding
puts "target =" +target
puts target.bytes.to_a.to_s
puts target.encoding
puts target.eql? "dupą"

好了,现在让我们运行这个例子:

PS C:\Users\user\ruby\2> ruby example.rb dupą
string constant =dupą
[100, 117, 112, 196, 133]
UTF-8
target =dup�
[100, 117, 112, 185]
UTF-8
false

所以两个相同的字符串中的字节是不同的,但它们仍然被识别为 UTF-8。

显然我遗漏了一些东西。我错过了什么?

最佳答案

因为我的键盘上没有你的特殊字符,所以我使用了其他字符。您需要确保您的 ruby​​ 脚本本身以 UTF-8 编码保存。然后试试这个,在第二行用你的替换 cp 。成功!!

# encoding: utf-8
target = ARGV[0].dup.force_encoding('CP1252').encode('UTF-8') # => true
#target = ARGV[0] # => false
puts "string constant = déjà"
puts "déjà".bytes.to_a.to_s
puts "déjà".encoding
puts "target =" +target
puts target.bytes.to_a.to_s
puts target.encoding
puts target.eql? "déjà" # =>true

关于ruby - Powershell ISE utf8 输入与 Ruby 的不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9972858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com