我有一个CSS文件,当我使用gedit打开它时看起来很好,但是当它被PHP读取(将所有CSS文件合并为一个)时,这个CSS前面有以下字符:
PHP删除所有空格,因此代码中间的随机会弄乱整个事物.正如我所提到的,当我在gedit中打开文件时,我实际上看不到这些字符,因此我无法轻易删除它们.
我搜索了问题,文件编码显然有问题,这是有道理的,因为我已经通过ftp和rsync将文件转移到不同的Linux/Windows服务器,并使用一系列文本编辑器.我不太了解字符编码,所以请帮助.
如果有帮助,文件将以UTF-8格式保存,gedit将不允许我以ISO-8859-15格式保存(该文档包含一个或多个无法使用指定字符编码进行编码的字符).我尝试用Windows和Linux行结尾保存它,但都没有帮助.
这里有两个问题.我有一组文件,通常是带有BOM的UTF-8.我想将它们(理想情况下)转换为没有BOM的UTF-8.似乎codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)会处理这个问题.但我真的没有看到任何关于使用的好例子.这是处理这个的最佳方法吗?
source files:
Tue Jan 17$ file brh-m-157.json
brh-m-157.json: UTF-8 Unicode (with BOM) text
Run Code Online (Sandbox Code Playgroud)
此外,如果我们能够处理不同的输入编码而不明确地知道(看到ASCII和UTF-16),那将是理想的.看起来这应该都是可行的.有没有可以将任何已知的Python编码和输出作为UTF-8而无BOM的解决方案?
从下面编辑1提出的sol'n(谢谢!)
fp = open('brh-m-157.json','rw')
s = fp.read()
u = s.decode('utf-8-sig')
s = u.encode('utf-8')
print fp.encoding
fp.write(s)
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)
我在评论中被告知错误是我用模式'rw'而不是'r +'/'r + b'打开文件,所以我最终应该重新编辑我的问题并删除已解决的部分.
我有一个定义,构建一个由UTF-8编码字符组成的字符串.输出文件使用'w+', "utf-8"参数打开.
但是,当我试着x.write(string)去拿UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 1: ordinal not in range(128)
我认为这是因为通常你会做`print(u'something').但我需要使用一个变量和U中的语录" _ "否定的是...
有什么建议?
编辑:这里的实际代码:
source = codecs.open("actionbreak/" + target + '.csv','r', "utf-8")
outTarget = codecs.open("actionbreak/" + newTarget, 'w+', "utf-8")
x = str(actionT(splitList[0], splitList[1]))
outTarget.write(x)
Run Code Online (Sandbox Code Playgroud)
基本上所有这一切应该是为我构建大量类似于此的字符串:
[??? Deliverables]= CASE WHEN things = 11
THEN C ELSE 0 END
我从这里下载文件“ pi_million_digits.txt”:
https://github.com/ehmatthes/pcc/blob/master/chapter_10/pi_million_digits.txt
然后,我使用以下代码打开并阅读它:
filename = 'pi_million_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
print(pi_string[:52] + "...")
print(len(pi_string))
Run Code Online (Sandbox Code Playgroud)
但是,产生的输出是正确的,除了它之前带有相同的奇怪符号:“3.141 ....”
是什么导致这些奇怪的符号?我正在剥线,所以我希望这些符号会被删除。
我通过 Excel 生成了一个 csv,在打印键名称时,我在第一个键上附加了一些奇怪的字符,如下所示:
\n\n\n\n\n键(['\xc3\xaf\xc2\xbb\xc2\xbfrow1', 'row2']
\n
import csv\n\npath = 'C:\\\\Users\\\\asdf\\\\Desktop\\\\file.csv'\nwith open(path, 'r') as file:\n reader = csv.DictReader(file)\n\n for row in reader:\n print(row.keys())\nRun Code Online (Sandbox Code Playgroud)\n\n但是,如果我只是在 IDE 中创建 csv,一切都会正常,并且不会打印奇怪的字符。我怎样才能读取excel csv来截掉奇怪的字符?
\n我尝试在 Python 中读取 CSV 文件,但第一行中的第一个元素是这样读取的0,而奇怪的字符不在文件中,它只是一个简单的0. 这是我使用的代码:
matriceDist=[]
file=csv.reader(open("distanceComm.csv","r"),delimiter=";")
for row in file:
matriceDist.append(row)
print (matriceDist)
Run Code Online (Sandbox Code Playgroud)