Encoding::UndefinedConversionError - "\xC2" from ASCII-8BIT to UTF-8
每次我尝试将哈希转换为JSON字符串时,我都会继续获取.我试着用[.encode | .force_encoding](["UTF-8" | "ASCII-8BIT" ])
,链.encode
带.force_encoding
,向后切换参数,但似乎没有任何工作,所以我抓住了错误是这样的:
begin
menu.to_json
rescue Encoding::UndefinedConversionError
puts $!.error_char.dump
p $!.error_char.encoding
end
Run Code Online (Sandbox Code Playgroud)
菜单是续集的dataset.to_hash,内容来自MySQL DB,utf8_general_ci编码并返回:
"\ XC2"
<#Encoding:ASCII-8BIT>
无论我.encode
/ .force_encoding
我使用什么,编码都不会改变.我甚至试图在.gsub!(/\\\xC2/)
没有运气的情况下更换琴弦.
有任何想法吗?
我正在尝试使用以下代码从网站检索数据(我已经审查了网址):
<?php
$url = [doesnt really matter];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$archivo_xml = fopen("test.tst", "w");
curl_setopt($ch, CURLOPT_FILE,$archivo_xml);
curl_exec($ch);
$as1 = curl_getinfo($ch, CURLINFO_NAMELOOKUP_TIME);
$as2 = curl_getinfo($ch, CURLINFO_CONNECT_TIME);
$as3 = curl_getinfo($ch, CURLINFO_PRETRANSFER_TIME);
$as4 = curl_getinfo($ch, CURLINFO_STARTTRANSFER_TIME);
$as5 = curl_getinfo($ch, CURLINFO_TOTAL_TIME);
echo "Lookup: ",$as1," \n\r Connect: ",$as2," \n\r Pretransfer: ",$as3," \n\r Starttransfer: ",$as4," \n\r Total: ",$as5,"\n\r","Error: ", curl_error($ch), "\n\r";
curl_close($ch);
fclose($archivo_xml);
?>
Run Code Online (Sandbox Code Playgroud)
它在本地工作正常,但不在服务器中.这是本地的输出:
Lookup: 0.015155
Connect: 0.0281
Pretransfer: 0.129087
Starttransfer: 0.786341
Total: 0.786384
Error:
Run Code Online (Sandbox Code Playgroud)
这是服务器的输出:
Lookup: 0.028731
Connect: …
Run Code Online (Sandbox Code Playgroud)