gpt4 book ai didi

ruby - Rails 将上传文件 "\xDE"从 ASCII-8BIT 解析为 UTF-8

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:09 29 4
gpt4 key购买 nike

我尝试解析上传 *.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”的猜测是错误的,不幸的是它会给你带来乱码。

关于ruby - Rails 将上传文件 "\xDE"从 ASCII-8BIT 解析为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19893926/

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