يونيكودينكوديرور:'أسي' الترميز لا يمكن ترميز الأحرف بسبب N ن من قاعدة البيانات
-
21-12-2019 - |
سؤال
لدي حقل للحصول عليه من قاعدة البيانات التي تحتوي على سلسلة مع هذا الجزء-ن وأثناء الحصول على هذا أحصل على خطأ:
"يونيكودينكوديررور:'أسي' الترميز لا يمكن ترميز الأحرف في موقف 12-15:ترتيبي ليس في النطاق (128)"
لقد بحثت في هذا الخطأ ، وكان هناك أشخاص آخرون يواجهون مشكلة بسبب يونيكود التي تبدأ شيئا من هذا القبيل u'\xa0
, ، إلخ.لكن في حالتي ، أعتقد أنه بسبب الشخصيات الخاصة.لا يمكنني إجراء تغييرات في قاعدة البيانات لأنها ليست تحت وصولي.يمكنني فقط الوصول إليه.
الرمز هنا:(في الواقع دعوتها إلى عنوان ورل الخارجي)
req = urllib2.Request(url)
req.add_header("Content-type", "application/json")
res = urllib2.urlopen(req,timeout = 50) #50 secs timeout
clientid = res.read()
result = json.loads(clientid)
ثم أستخدم متغير النتيجة للحصول على السلسلة المذكورة أعلاه وأحصل على خطأ في هذا السطر:
updateString +="name='"+str(result['product_name'])+"', "
المحلول
تحتاج إلى العثور على الترميز الذي يستخدم لبياناتك قبل إدراجها في قاعدة البيانات.دعونا نفترض انها أوتف-8 لأن هذا هو الأكثر شيوعا.
في هذه الحالة سوف تحتاج إلى أوتف-8 فك بدلا من أسي فك.لم تقدم أي رمز ، لذلك أفترض أن لديك "data".decode()
.حاول "data".decode("utf-8")
, ، وإذا تم ترميز بياناتك باستخدام هذا الترميز ، فستعمل.
نصائح أخرى
لذلك يبدو لي مثل السلسلة بالفعل يونيكود ثم.لذا قم بإزالة وظائف str()
ووظائف الأجيال على هذا الخط.