Questions tagged «character-encoding»

字符编码是指将字符表示为一系列字节的方式。Web的字符编码在编码标准中定义。

6
ASCII码是7位还是8位?
我的老师告诉我ASCII是8位字符编码方案。但是它仅针对0-127码进行定义,这意味着它可以适合7位。那么,难道说ASCII位实际上是7位代码吗? 当说ASCII完全是8位代码时,我们到底要说什么呢?

7
如何可靠地猜测MacRoman,CP1252,Latin1,UTF-8和ASCII之间的编码
在工作中,似乎没有一周没有编码相关的混乱,灾难或灾难。问题通常来自程序员,他们认为他们无需指定编码就可以可靠地处理“文本”文件。但是你不能。 因此,已决定从此以后禁止文件以*.txt或结尾的文件名*.text。这种想法是,这些扩展误导了随意的程序员对编码的沉闷自满,这会导致处理不当。根本没有扩展将是更好的选择,因为至少您知道自己不知道拥有什么。 但是,我们不会走那么远。相反,您将期望使用以编码结尾的文件名。因此,对于文本文件,例如,这些会是这样README.ascii,README.latin1,README.utf8,等。 对于需要特定扩展名的文件,如果可以在文件本身内部指定编码,例如在Perl或Python中,则应这样做。对于Java源之类的文件,其中文件内部没有这样的功能,您可以将编码放在扩展名之前,例如SomeClass-utf8.java。 对于输出,强烈建议使用 UTF-8 。 但是作为输入,我们需要弄清楚如何处理代码库中名为的数千个文件*.txt。我们想重命名所有这些以适应我们的新标准。但是我们不可能全神贯注。因此,我们需要一个实际起作用的库或程序。 这些格式有ASCII,ISO-8859-1,UTF-8,Microsoft CP1252或Apple MacRoman。尽管我们知道我们可以判断某些东西是否为ASCII,并且知道有某种东西可能是UTF-8还是一个不错的选择,但我们对8位编码感到困惑。因为我们在大多数台式机为Mac的混合Unix环境(Solaris,Linux,Darwin)中运行,所以我们有很多烦人的MacRoman文件。这些尤其是一个问题。 一段时间以来,我一直在寻找一种以编程方式确定 ASCII码 ISO-8859-1 CP1252 麦克罗曼 UTF-8 文件在其中,我还没有找到可以可靠地区分这三种不同的8位编码的程序或库。我们可能仅拥有一千多个MacRoman文件,因此我们使用的任何字符集检测器都必须能够将它们嗅出。我看过的东西都无法解决这个问题。我对ICU字符集检测器库寄予厚望,但它不能处理MacRoman。我也研究过模块,它们在Perl和Python中都可以做同样的事情,但是一遍又一遍地是同一回事:不支持检测MacRoman。 因此,我要寻找的是一个现有的库或程序,该库或程序可以可靠地确定文件所用的五种编码中的哪一种(最好是更多)。特别是它必须区分我引用的三种3位编码,尤其是MacRoman。文件是超过99%的英语文本;还有其他几种语言,但不是很多。 如果是库代码,则我们的语言偏好是按Perl,C,Java或Python的顺序排列。如果它只是一个程序,那么我们并不在乎它的语言是什么,只要它是完整的源代码,在Unix上运行并且完全不受限制即可。 还有其他人遇到过随机编码成千上万个旧文本文件的问题吗?如果是这样,您是如何尝试解决它的?您的成功程度如何?这是我的问题中最重要的方面,但是我也很感兴趣您是否鼓励程序员使用文件中的实际编码来命名(或重命名)他们的文件,这将有助于我们将来避免此问题。有没有人曾经尝试过在制度基础上强制执行,如果成功,那么成功与否,为什么? 是的,我完全理解,考虑到问题的性质,为什么不能保证给出确切的答案。对于小文件,尤其是这种情况,因为您没有足够的数据继续运行。幸运的是,我们的文件很少。除了随机README文件外,大多数文件的大小在50k到250k之间,许多文件更大。大小超过K的任何内容都将保证使用英语。 问题领域是生物医学文本挖掘,因此我们有时会处理大量的超大型语料库,例如PubMedCentral的所有Open Access存储库。一个相当大的文件是BioThesaurus 6.0,容量为5.7 GB。该文件特别令人讨厌,因为它几乎都是UTF-8。但是,我相信有些numbskull会以一些8位编码插入其中的几行,即Microsoft CP1252。您需要花费相当长的时间才能踏上那个旅程。:(




10
全包字符集可以避免“ java.nio.charset.MalformedInputException:输入长度= 1”?
我正在用Java创建一个简单的单词计数程序,该程序可以读取目录中基于文本的文件。 但是,我不断收到错误: java.nio.charset.MalformedInputException: Input length = 1 从这行代码: BufferedReader reader = Files.newBufferedReader(file,Charset.forName("UTF-8")); 我知道可能是因为我使用了一个Charset不包含文本文件中某些字符的字符,其中一些包含其他语言的字符。但我想包括那些字符。 后来我在JavaDocs上了解到Charset可选,并且仅用于更有效地读取文件,因此我将代码更改为: BufferedReader reader = Files.newBufferedReader(file); 但是某些文件仍然抛出MalformedInputException。我不知道为什么 我想知道是否有一个全包式的文件Charset,可以让我阅读带有许多不同类型字符的文本文件? 谢谢。

2
一个字符有多少位或字节?[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 9年前关闭。 每个“字符”有多少位或字节?

9
使用Python读取UTF8 CSV文件
我正在尝试使用Python读取带重音字符的CSV文件(仅法语和/或西班牙语字符)。基于csvreader的Python 2.5文档(http://docs.python.org/library/csv.html),我提出了以下代码来读取CSV文件,因为csvreader仅支持ASCII。 def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs): # csv.py doesn't do Unicode; encode temporarily as UTF-8: csv_reader = csv.reader(utf_8_encoder(unicode_csv_data), dialect=dialect, **kwargs) for row in csv_reader: # decode UTF-8 back to Unicode, cell by cell: yield [unicode(cell, 'utf-8') for cell in row] def utf_8_encoder(unicode_csv_data): for line in unicode_csv_data: yield line.encode('utf-8') filename = …

3
JsonParseException:非法的未加引号的字符((CTRL-CHAR,代码10)
我正在尝试使用org.apache.httpcomponentsRest API,它将把JSON格式的数据发布到API。 我得到这个异常: 引起原因:com.fasterxml.jackson.core.JsonParseException:非法的不带引号的字符((CTRL-CHAR,代码10)):必须使用反斜杠转义以包含在字符串中。 原因是因为ctrl-char包含在JSON字符串中。 有什么方法可以替代此解决方案或其他解决方案吗?

6
如何在Java中查找默认的字符集/编码?
显而易见的答案是使用,Charset.defaultCharset()但是我们最近发现这可能不是正确的答案。有人告诉我,结果在某些情况下不同于java.io类使用的实际默认字符集。看起来Java保留了2套默认字符集。有人对这个问题有见解吗? 我们能够重现一个失败案例。这是一种用户错误,但仍可能会暴露所有其他问题的根本原因。这是代码, public class CharSetTest { public static void main(String[] args) { System.out.println("Default Charset=" + Charset.defaultCharset()); System.setProperty("file.encoding", "Latin-1"); System.out.println("file.encoding=" + System.getProperty("file.encoding")); System.out.println("Default Charset=" + Charset.defaultCharset()); System.out.println("Default Charset in Use=" + getDefaultCharSet()); } private static String getDefaultCharSet() { OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream()); String enc = writer.getEncoding(); return enc; } …

6
Windows 10命令提示符上的git日志输出编码问题
问题 如何使git log命令输出正确显示在Windows命令提示符下? 例 如您所见,我可以正确键入变音字符,但git log输出会以某种方式转义。根据UTF-8编码表,输出中尖括号(<和>)之间的代码对应于先前键入的git config参数。 我曾尝试将LESSCHARSET环境变量设置utf-8为针对类似问题的答案之一,但是输出出现乱码: 我知道它已按预期方式.git/config正确编码。utf-8gitk locale如果需要,这是命令输出 LANG= LC_CTYPE="C.UTF-8" LC_NUMERIC="C.UTF-8" LC_TIME="C.UTF-8" LC_COLLATE="C.UTF-8" LC_MONETARY="C.UTF-8" LC_MESSAGES="C.UTF-8" LC_ALL= 编辑: 在纯git-bash中,输出也相同: 所以我认为问题是与外壳无关的,并且与Git或其配置本身有关。

5
Python:从ISO-8859-1 / latin1转换为UTF-8
我已经使用电子邮件模块将此字符串从Quoted-printable解码为ISO-8859-1。这给了我像“ \ xC4pple”这样的字符串,它对应于“Äpple”(瑞典语中的Apple)。但是,我无法将这些字符串转换为UTF-8。 >>> apple = "\xC4pple" >>> apple '\xc4pple' >>> apple.encode("UTF-8") Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in range(128) 我该怎么办?


7
将字节数组转换为字符串(Java)
我正在用Google App Engine编写一个Web应用程序。它允许人们从根本上编辑html代码,这些代码作为.html文件存储在blobstore中。 我正在使用fetchData返回byte[]文件中所有字符中的一个。我正在尝试打印到html,以便用户编辑html代码。一切正常! 现在这是我唯一的问题: 转换回字符串时,字节数组存在一些问题。智能引号和几个字符看上去很时髦。(?或日语符号等。)具体来说,我看到的是几个字节,它们的负值导致了问题。 智能引号赶回来,-108和-109字节数组英寸 为什么会这样,如何解码负字节以显示正确的字符编码?

4
是否有一组用于测试字符编码问题的“ Lorem ipsums”文件?
对于布局,我们有著名的“ Lorem ipsum”文本来测试其外观。 我要寻找的是一组包含Text的文件,这些Text编码有几种不同的编码,我可以在JUnit测试中使用它们来测试读取文本文件时处理字符编码的某些方法。 例: 具有ISO 8859-1编码的测试文件和Windows-1252编码的测试文件。Windows-1252必须触发区域80 16 – 9F 16中的差异。换句话说,它必须至少包含此区域的一个字符,才能与ISO 8859-1区别开来。 也许最好的测试文件集是每种编码的测试文件一次包含所有字符。但是也许我不了解某件事-我们都喜欢这种编码的东西,对不对?:-) 是否有这样一组用于字符编码问题的测试文件?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.