لماذا يتم عرض الكود الخاص بي على أنه فوضوي بينما ليس؟ [مغلق

StackOverflow https://stackoverflow.com/questions/2887734

سؤال

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" يحاول تحديد موقع الموارد المعالجة النسبية التي لا توفرها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top