我正在尝试从网页中获取一些数据。此网页已声明字符集为 utf-8。但是 \xa3 符号有问题。我不能被编码或解码到/从'utf-8'。
for key,value in self.__dict__.iteritems():
if key not in self.db_attributes:
print repr(value)
attrs_statement+=str(key)+', '
values_statement+=str(value)+', '
Run Code Online (Sandbox Code Playgroud)
错误:
u'\xa3410'
Traceback (most recent call last):
File "C:\Users\Milano\My Documents\LiClipse Workspace\Velvet_scraper\vehicle.py", line 432, in <module>
v.prepare_insert_statement('motorhog_temp')
File "C:\Users\Milano\My Documents\LiClipse Workspace\Velvet_scraper\vehicle.py", line 381, in prepare_insert_statement
values_statement+=str(value)+', '
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
请问这有什么问题吗?
编辑:
全方法:
def prepare_insert_statement(self,table):
log('prepare_insert_statement, table: {0}'.format(table))
attrs_statement = "("
values_statement = "("
for key,value in self.__dict__.iteritems():
if key not …Run Code Online (Sandbox Code Playgroud) 我正在运行一个 spring-boot 应用程序,它似乎在处理特定请求时遇到问题。该请求是一个包含二进制数据的 POST,但是,当 JavaServlet(或 tomcat?)收到它时,它不知道如何对其进行解码,因此会产生以下错误:
org.apache.tomcat.util.http.Parameters : Character decoding failed. Parameter [0 *H÷
0 UUS1#0!U
S§¥ø§'ôZúöf¿(å_Ý«"õéñ¤åyl¢Ýg0izt¡÷~ÅüvDt¿Äû¨Ë åt@òÔÊdJRBq%2¶ úFsX] with value [] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.
Run Code Online (Sandbox Code Playgroud)
我知道以下配置似乎对其有一些影响,但我不知道将包含二进制文件的帖子的值设置为什么:
server.tomcat.uri-encoding=UTF-8 #I've also tried UTF-16
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间。
编辑(答案):您可以使用具有以下配置的 apache 代理来解决此问题:
<Location /endpoint/>
ProxyPass https://127.0.0.1:443/endpoint/
RequestHeader unset Content-Type
RequestHeader set Content-Type "application/octet-stream"
</Location>
Run Code Online (Sandbox Code Playgroud)
取消设置 Content-Type 是可选的,我相信该设置应该覆盖。但是,我不是 100% 该字段不区分大小写。也RequestHeader unset …
我正在尝试使用 beautifulsoup 抓取网站。我基本上是成功的,但有两个问题
\n\n从网站获取数据后,我将它们打印到屏幕上,并将它们写入 CSV 文件。网站中有一个价格字段,其中包含实际金额的卢比符号(价格字段的示例结构:\xe2\x82\xb9 10000)。当我将金额打印到控制台时,它打印得很好并且没有任何问题。当我尝试将其写入 Excel 工作表时,出现错误 \n"Unicodeencoeerror" 编解码器 \'charmap\' 无法对位置 28 中的字符 \'\\u20b9\' 进行编码。我正在将其他字段打印到控制台和 Excel该问题仅显示 \nup 有两个字段,一个带有货币符号,另一个带有 * \n符号
我正在运行一个循环来从网页中获取特定\n搜索的所有页面。搜索结果约为 344 页,但循环在大约页 \n43 处停止,仅 HTML 错误 500 作为错误消息
\n\nimport bs4\nfrom urllib.request import urlopen as uReq\n\nfrom bs4 import BeautifulSoup as Soup\nfilename = "data.csv"\nf = open(filename,"w")\nheaders = "phone_name, phone_price, phone_rating,number_of_ratings, \nmemory, display, camera, battery, processor, Warrenty, security, OS\\n"\nf.write(headers)\n\n\nfor i in range(2): # Number of pages minus one \n my_url = \'https://www.flipkart.com/search?as=off&as-\n show=on&otracker=start&page=\n {}&q=cell+phones&viewType=list\'.format(i+1)\n print(my_url)\n\n uClient=uReq(my_url)\n\n …Run Code Online (Sandbox Code Playgroud)在 Python 中编码对我来说是新的,我正在努力理解它。如果这已经被问到并已经回答了,我们深表歉意。
我正在尝试对 Python 列表进行编码并对其进行解码。当我尝试直接对列表进行编码时,遇到如下错误。
>>> my_list = [1, 2, 3]
>>> encoded_list = base64.b64encode(my_list)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 54, in b64encode
encoded = binascii.b2a_base64(s)[:-1]
TypeError: b2a_base64() argument 1 must be string or buffer, not list
Run Code Online (Sandbox Code Playgroud)
为了修复它,我将列表对象转换为字符串并将其传递给 encode 函数,并且我能够成功对其进行编码。
>>> encoded_list = base64.b64encode(str(my_list))
>>> encoded_list
'WzEsIDIsIDNd'
Run Code Online (Sandbox Code Playgroud)
当我尝试解码它时,我得到一个解码后的字符串,如下所示。
>>> decoded_list = base64.b64decode(encoded_list)
>>> decoded_list
'[1, 2, 3]'
>>> type(decoded_list)
<type 'str'>
Run Code Online (Sandbox Code Playgroud)
但是我的初衷是对列表进行编码和解码,而不是将列表转换为字符串,然后将字符串转换为列表。
很确定这不是对 dict 或列表等对象进行编码的正确方法。如果是这种情况,有人可以启发我如何在 Python 中编码/解码非字符串对象吗?
非常感谢。
这是一个非常奇怪的情况, split 函数正在改变字符串格式。请看下面的代码,
代码:
COM_Port = serial.Serial(COM_PortName)
with COM_Port as port:
while True:
RxedData = port.readline()
line = RxedData.decode('utf-8')
print("Line 1: ", line)
row = line.split(',')[1:-1]
print("Line 2: ", row)
Run Code Online (Sandbox Code Playgroud)
输出:
Line 1: "* , 0 0 0 0 0 5 7 5 , 2 3 : 0 3 : 4 7 , 1 1 / 0 2 / 2 0 , 1 2 . 3 4 5 , K P A , 0 0 0 0 6 . 8 …Run Code Online (Sandbox Code Playgroud) 我目前正在为 F1 方向盘开发自己的显示器。F1 2019(由codemasters提供)通过UDP发送数据。该数据存储在字节数组中。
我在解码返回的数组时遇到一些问题。问题是我得到了很多信息,但我不知道如何处理它们。我将向您介绍我所尝试过的方法。
我通过端口 20777(游戏的标准端口)连接到游戏:
using System.Net;
using System.Net.Sockets;
var Client = new UdpClient(20777); //Connectionport
Run Code Online (Sandbox Code Playgroud)
在下一段代码中,我从游戏中获取信息:
var RemoteIP = new IPEndPoint(IPAddress.Any, 60240);
byte[] received = Client.EndReceive(res, ref RemoteIP);
Run Code Online (Sandbox Code Playgroud)
如您所见,游戏数据当前存储在字节数组中。
这是最困难的部分(对我来说)。
F1 2019 发送的数据打包在结构中(据我从他们的网站了解到)。但我不知道如何从字节数组中获取信息并放入正确的变量中(例如,当前速度是多少,或者汽车处于什么档位)。
有关数据包的信息位于 Codemasters 的网站上:
https://forums.codemasters.com/topic/44592-f1-2019-udp-specification/
现在真正的问题是:
当我输入这行代码时:
short game_version = BitConverter.ToInt16(received, 0);
Run Code Online (Sandbox Code Playgroud)
我将其显示在文本框中,变量game_version现在是 2019 年。
我不明白为什么indexnumber2019年的字节转换为0。
而且我不知道使用哪些索引号来获取我想要的每个变量。
我希望有人能够对这个问题有所启发。在codemasters论坛上似乎每个人都知道如何从字节数组中获取数据。
亲切的问候。
我把这个文本放在一个文件中 - Recuérdame(注意它是一个法语单词).当我用python脚本读取这个文件时,我得到这个文本Recuérdame.
我把它读作unicode字符串.我是否需要找到文本的编码是什么并解码?还是我的终端在玩弄诡计?
喜.我是php的新手.我需要在php中编写两个独立的函数来编码和解码多维数组.我附加了一个插件.......... encode.class.php ..............
<?php
/*-------------------------
Author: Jonathan Pulice
Date: July 26th, 2005
Name: JPEncodeClass v1
Desc: Encoder and decoder using patterns.
-------------------------*/
class Protector
{
var $Pattern = "";
var $PatternFlip = "";
var $ToEncode = "";
var $ToDecode = "";
var $Decoded = "";
var $Encoded = "";
var $Bug = false;
var $DecodePattern = "";
function Debug($on = true)
{
$this->Bug = $on;
}
function Encode()
{
$ar = explode(":", $this->Pattern);
$enc = $this->ToEncode;
if ($this->Bug) …Run Code Online (Sandbox Code Playgroud) 我正在运行Ubuntu 10.04 LTS,Python 2.6.5(r265:79063,2010年4月16日,13:09:56)
>>> m = 'Šiven'
>>> m
'\xa6iven'
>>> unicode(m)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa6 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我应该如何正确设置它(编码,解码),以便它准确地写出它读取的内容?
我现在对编码方案感到疯狂.我将在下面陈述我的问题,请提供您的意见.
问题:我有一些输入字符串,如下面的代码所示.最终所需的输出是"Křižovnická190".[你可以在这里解码].我正在使用perl模块来解码这些字符串.以下是我的测试代码:
use HTML::Entities;
binmode STDOUT,":utf8";
$a = "Křižovnická 190";
decode_entities($a);
print $a."\n";
Run Code Online (Sandbox Code Playgroud)
然而输出,我得到的是"Křiovnická19",这意味着"ř"被正确解码,但"ž"不是.我的问题是为什么?然后我尝试了"_decode_entities"方法,我们提供了entity2char哈希,但仍然没有成功.
PS:我必须在这里使用Perl,因为其他遗留API,请在这里帮助我