لماذا يتم عرض الكود الخاص بي على أنه فوضوي بينما ليس؟ [مغلق
-
04-10-2019 - |
سؤال
class sss(webapp.RequestHandler):
def get(self):
url = "http://www.google.com/"
result = urlfetch.fetch(url)
if result.status_code == 200:
self.response.out.write(result.content)
عندما أقوم بتغيير الرمز إلى هذا:
if result.status_code == 200:
self.response.out.write(result.content.decode('utf-8').encode('gb2312'))
إنه يظهر شيئًا غريبًا. ماذا علي أن أفعل؟
عندما أستخدم هذا:
self.response.out.write(result.content.decode('big5'))
الصفحة مختلفة مع تلك التي رأيتها google.com.
كيف أحصل على Google.com الذي رأيته؟
المحلول
ربما تخدم Google لك ISO-8859-1. على الأقل ، هذا ما يخدمونه لي من أجل وكيل المستخدم "AppEngine-Google ؛ (+http://code.google.com/appengine) "(التي تستخدمها urlfetch). قيمة رأس نوع المحتوى هي:
text/html; charset=ISO-8859-1
لذلك سوف تستخدم:
result.content.decode('ISO-8859-1')
إذا قمت بفحص result.headers["Content-Type"]
, ، يمكن أن يتكيف الرمز الخاص بك مع التغييرات في الطرف الآخر. يمكنك عمومًا تمرير charset (ISO-8859-1 في هذه الحالة) مباشرة إلى طريقة فك تشفير Python.
نصائح أخرى
كيف أحصل على Google.com الذي رأيته؟
ربما يستخدم عناوين URL النسبية للصور ، JavaScript ، CSS ، إلخ ، أنك لا تتحول إلى عناوين URL المطلقة في موقع Google. لتأكيد هذا: يجب أن تعرض سجلاتك 404 خطأ ("الصفحة غير موجودة") باعتبارها المتصفح الذي تخدمه "فقط HTML" يحاول تحديد موقع الموارد المعالجة النسبية التي لا توفرها.