Ruby can';t在没有格式问题的情况下将IP写入文本文件
我无法从文本文件读取IP并将其正确写入另一个文本文件。它将文件中写入的IP显示为:“ÿþ1 9 2.1 6 8.1 1 1 0.4” 我已经试过了。剥去和。删除(“”),但运气不好。有人能看到这个问题吗Ruby can';t在没有格式问题的情况下将IP写入文本文件,ruby,Ruby,我无法从文本文件读取IP并将其正确写入另一个文本文件。它将文件中写入的IP显示为:“ÿþ1 9 2.1 6 8.1 1 1 0.4” 我已经试过了。剥去和。删除(“”),但运气不好。有人能看到这个问题吗 谢谢该文件是用Windows上的记事本生成的。它被编码为 文件中的前两个字节包含代码和;这是UTF-16LE的 每个字符按2个字节(16位)编码,最低有效字节排在第一位(较小的尾端顺序)。 输出中可打印字符之间的空格实际上是(代码为0的字符) 您可以做的(除了将文件转换为更合适的格式,如UTF-
谢谢该文件是用Windows上的记事本生成的。它被编码为 文件中的前两个字节包含代码和;这是UTF-16LE的
每个字符按2个字节(16位)编码,最低有效字节排在第一位(较小的尾端顺序)。
输出中可打印字符之间的空格实际上是(代码为0
的字符)
您可以做的(除了将文件转换为更合适的格式,如UTF-8
甚至ISO-8859-1
)是将'rb:BOM | UTF-16LE'
作为
r
告诉File#open
以只读模式打开文件(默认情况下也是这样)李>
b
表示“二进制模式”;BOM|UTF-16
要求使用李>
:BOM | UTF-16LE
告诉Ruby读取并忽略文件中存在的BOM
,并期望文件的其余部分编码为UTF16-LE
如果可以,我建议您使用合适的编辑器(甚至可以使用记事本)将文件编码转换为UTF-8
或ISO-8859-1
,所有这些问题都会消失。该文件是在Windows上使用记事本生成的。它被编码为
文件中的前两个字节包含代码和;这是UTF-16LE的
每个字符按2个字节(16位)编码,最低有效字节排在第一位(较小的尾端顺序)。
输出中可打印字符之间的空格实际上是(代码为0
的字符)
您可以做的(除了将文件转换为更合适的格式,如UTF-8
甚至ISO-8859-1
)是将'rb:BOM | UTF-16LE'
作为
r
告诉File#open
以只读模式打开文件(默认情况下也是这样)李>
b
表示“二进制模式”;BOM|UTF-16
要求使用李>
:BOM | UTF-16LE
告诉Ruby读取并忽略文件中存在的BOM
,并期望文件的其余部分编码为UTF16-LE
如果可以,我建议您使用合适的编辑器(甚至可以使用记事本)将文件编码转换为UTF-8
或ISO-8859-1
,所有这些问题都会消失。文件似乎是在Windows上使用记事本生成的。它很可能被编码为UTF-16LE
(可打印字符之间的空格为空字符)。该文件似乎是用Windows上的记事本生成的。它很可能被编码为UTF-16LE
(可打印字符之间的空格为空字符)。非常感谢。就这样。非常感谢。
#Read the first line for the IP
def get_server_ip
File.open("d:\\ip_addr.txt") do |line|
a = line.readline()
b = a.to_s
end
end
#append the ip to file2
def append_ip
FileUtils.cp('file1.txt', 'file2.txt')
file_names = ['file2.txt']
file_names.each do |file_name|
text = File.read(file_name)
b = get_server_ip
new_contents = text.gsub('ip_here', b)
File.open(file_name, "w") {|file| file.puts new_contents }
end
end