我尝试解析上传 *.txt 文件并获取一些导入数据库信息。但在保存之前,我尝试以 utf-8 格式获取 tring。当我这样做时,出现错误:
"\xDE" from ASCII-8BIT to UTF-8
第一个文件字符
Import data \xDE\xE4\xE5
解析代码之前
# encoding: utf-8
require "iconv"
class HandlerController < ApplicationController
def add_report
utf8_format = "UTF-8"
file_data = params[:import_file].tempfile.read.encode(utf8_format)
end
end
附言我也尝试用 iconv
来做,但没有帮助
在成功转换字符串之前,您需要从具有有效内容(以及用于输入和输出的兼容字符)的已知编码开始。
ASCII-8BIT
不会将与 Unicode 兼容的字符分配给值 128..255
- 它无法转换为 Unicode。
很有可能输入(如您所说的是文本)以其他编码开头。您可以从假设 ISO-8859-1
(“Latin-1”)开始,这是一种很常见的编码,尽管您可能有一些其他线索,或者知道文件中期望的字符,在哪种情况你应该尝试其他情况。
我建议你尝试这样的事情:
file_data = params[:import_file].tempfile.read.force_encoding('ISO-8859-1')
utf8_file_data = file_data.encode(utf8_format)
这可能不会给你一个错误,但如果我对“ISO-8859-1”的猜测是错误的,不幸的是它会给你带来乱码。
我是一名优秀的程序员,十分优秀!