语法错误:文件“....”中以 \xe0 开头的非 UTF-8 代码,但未声明编码

问题描述

# -*- coding: <utf-8> -*-
import re
conversiontable = { 'ॐ' : 'oṁ','ऀ' : 'ṁ','ँ' : 'ṃ','ं' : 'ṃ','ः' : 'ḥ','अ' : 'a','आ' : 'ā','इ' : 'i','ई' : 'ī','उ' : 'u','ऊ' : 'ū','ऋ' : 'r̥','ॠ' : ' r̥̄','ऌ' : 'l̥','ॡ' : ' l̥̄','ऍ' : 'ê','ऎ' : 'e','ए' : 'e','ऐ' : 'ai','ऑ' : 'ô','ऒ' : 'o','ओ' : 'o','औ' : 'au','ा' : 'ā','ि' : 'i','ी' : 'ī','ु' : 'u','ू' : 'ū','ृ' : 'r̥','ॄ' : ' r̥̄','ॢ' : 'l̥','ॣ' : ' l̥̄','ॅ' : 'ê','े' : 'e','ै' : 'ai','ॉ' : 'ô','ो' : 'o','ौ' : 'au','क़' : 'q','क' : 'k','ख़' : 'x','ख' : 'kh','ग़' : 'ġ','ग' : 'g','ॻ' : 'g','घ' : 'gh','ङ' : 'ṅ','च' : 'c','छ' : 'ch','ज़' : 'z','ज' : 'j','ॼ' : 'j','झ' : 'jh','ञ' : 'ñ','ट' : 'ṭ','ठ' : 'ṭh','ड़' : 'ṛ','ड' : 'ḍ','ॸ' : 'ḍ','ॾ' : 'd','ढ़' : 'ṛh','ढ' : 'ḍh','ण' : 'ṇ','त' : 't','थ' : 'th','द' : 'd','ध' : 'dh','न' : 'n','प' : 'p','फ़' : 'f','फ' : 'ph','ब' : 'b','ॿ' : 'b','भ' : 'bh','म' : 'm','य' : 'y','र' : 'r','ल' : 'l','ळ' : 'ḷ','व' : 'v','श' : 'ś','ष' : 'ṣ','स' : 's','ह' : 'h','ऽ' : '\'','्' : '','़' : '','०' : '0','१' : '1','२' : '2','३' : '3','४' : '4','५' : '5','६' : '6','७' : '7','८' : '8','९' : '9','ꣳ' : 'ṁ','।' : '.','॥' : '..',' ' : ' ',}
consonants = '\u0915-\u0939\u0958-\u095F\u0978-\u097C\u097E-\u097F' 
vowelsigns = '\u093E-\u094C\u093A-\u093B\u094E-\u094F\u0955-\u0957' 
nukta = '\u093C' 
virama = '\u094D' 
devanagarichars = '\u0900-\u097F\u1CD0-\u1CFF\uA8E0-\uA8FF'

我一直在尝试使用上述映射将文本从拉丁文音译为梵文。 我正在使用 VS Code,它向我抛出编码错误“非 UTF-8 代码以 \xe0 开头,文件“....”但未声明编码”。我尝试将 utf-8 编码行放在代码上方,但没有用。

谁能解释一下为什么会发生这种情况,我应该怎么做才能纠正它?

解决方法

代码行应该是:

# -*- coding: utf-8 -*-

或者,如果您使用 python3,它可以在没有编码声明的情况下工作,因为它默认为 UTF-8。

,

删除第一行。

它可能只会混淆你和 Python。不是通过写文件是 UTF-8 来实现的。

您应该检查文件的编码。检查 VS 是否对您的文件使用 UTF-8。在那里设置编码,然后保存文件。所以现在python会将文件视为UTF-8。

如果你写第一行,Python 只是认为文件是 UTF-8,其实不是,所以报错。您正在强制 Python 将文件读取为 UTF-8。

如果你去掉第一行,可能会出现同样的错误(UTF-8是默认的,所以如果没有强烈建议其他编码,它可能仍然把它解释为UTF-8并给你同样的错误,另一方面,它可能会尝试找到编码)。

但是如果您将 UTF-8 设置为文件的编码(在 VS 中,通常在任何代码编辑器中),那么文件将保存为 UTF-8。

PS:如果这不是作业,您可能需要阅读 Unicode 标准中有关天文梵文的章节:还有许多特殊情况需要注意。可能还有一个关于音译的标准(或者只是寻找一个图书馆)