在这篇文章中,我们将带领您了解如何在Java中将UTF-8转换为US-Ascii的全貌,同时,我们还将为您介绍有关java–如何在Android中将字符串转换为UTF-8?、从UTF-8转换为ASCI
在这篇文章中,我们将带领您了解如何在Java中将UTF-8转换为US-Ascii的全貌,同时,我们还将为您介绍有关java – 如何在Android中将字符串转换为UTF-8?、从UTF-8转换为ASCII的Python脚本、你如何在C中将UINT8转换为UINT32?、使用iconv将UTF8转换为UTF16的知识,以帮助您更好地理解这个主题。
本文目录一览:- 如何在Java中将UTF-8转换为US-Ascii
- java – 如何在Android中将字符串转换为UTF-8?
- 从UTF-8转换为ASCII的Python脚本
- 你如何在C中将UINT8转换为UINT32?
- 使用iconv将UTF8转换为UTF16
如何在Java中将UTF-8转换为US-Ascii
我们有一个系统,客户(主要是欧洲人)输入的文本(使用UTF-8)必须分发到不同的系统,其中大多数接受UTF-8,但是现在我们还必须将文本分发到仅接受美国的美国系统。
-Ascii 7位
因此,现在我们需要将所有欧洲字符翻译成最近的美国Ascii。是否有任何Java库可帮助完成此任务?
现在,我们刚刚开始添加到转换表中,在该表中Å(瑞典AA)->
A等,在找不到与输入字符匹配的位置的情况下,我们将其记录下来并替换为问号并尝试为下一个版本修复该问题,但效率似乎很低,其他人之前必须做过类似的事情。
java – 如何在Android中将字符串转换为UTF-8?
我正在使用一个名为Jsoup的HTML解析器来加载和解析HTML文件.问题是我正在抓取的网页是用ISO-8859-1字符集编码的,而Android使用的是UTF-8编码(?).这导致一些字符显示为问号.
所以现在我想我应该将字符串转换为UTF-8格式.
现在我在Android SDK中找到了这个名为CharsetEncoder的类,我想这可以帮助我.但我无法弄清楚如何在实践中实现它,所以我想知道是否可以通过一个实际的例子得到som的帮助.
更新:读取数据的代码(Jsoup)
@H_301_11@url = new URL("http://www.example.com");
Document doc = Jsoup.parse(url,4000);
当您使用正确的String constructor从服务器读取的数据创建字符串时,请不要忘记指定编码.
从UTF-8转换为ASCII的Python脚本
我正在尝试在python中编写脚本以将utf-8文件转换为ASCII文件:
#!/usr/bin/env python
# *-* coding: iso-8859-1 *-*
import sys
import os
filePath = "test.lrc"
fichier = open(filePath,"rb")
contentOfFile = fichier.read()
fichier.close()
fichierTemp = open("tempASCII","w")
fichierTemp.write(contentOfFile.encode("ASCII",'ignore'))
fichierTemp.close()
当我运行此脚本时,出现以下错误:
UnicodeDecodeError:’ascii’编解码器无法解码位置13的字节0xef:序数不在范围内(128)
我认为可以使用encode方法中的ignore参数忽略错误。但是似乎没有。
我愿意接受其他转换方式。
你如何在C中将UINT8转换为UINT32?
我的以下代码是否会被认为是正确,有效,高效和安全的?
UINT32 convU8toU32(UINT8 *number) { UINT32 result = *number; return *result; }
请注意,我是来自Java世界的C的新角色.
解决方法
UINT32 target = source;
对于一些UINT8源码.
使用static_cast显式转换是可选的;如果转换(可能)缩小,则演员会使一些编译器警告静音.
使用iconv将UTF8转换为UTF16
当我使用iconv从UTF16转换为UTF8时,一切都很好,反之亦然。 我有这些文件:
a-16.strings: Little-endian UTF-16 Unicode c program text a-8.strings: UTF-8 Unicode c program text,with very long lines
编辑器中的文本看起来OK。 当我运行这个:
iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16.strings
然后我得到这个结果:
b-16.strings: data a-16.strings: Little-endian UTF-16 Unicode c program text a-8.strings: UTF-8 Unicode c program text,with very long lines
file实用程序不显示预期的文件格式,并且文本在编辑器中看起来不太好。 难道这是iconv不会创build正确的BOM? 我在MAC命令行上运行它。
在bash脚本中,在脚本退出后的提示符上打印命令(作为build议)
不能在Linux的python命令行中编辑行
强制重新启动Windows XP在所有情况下
batch file用于在文件前添加随机数字(3位数字)并删除数字
batch file: – 检测Windows版本并运行exe文件
为什么不是正确的UTF-16LE格式的B – 16? 有没有另一种转换utf8到utf16的方法?
更详细的说明如下。
$ iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16le-BAD-fromUTF8.strings $ iconv -f UTF-8 -t UTF-16 a-8.strings > b-16be.strings $ iconv -f UTF-16 -t UTF-16LE b-16be.strings > b-16le-BAD-fromUTF16BE.strings $ file *s a-16.strings: Little-endian UTF-16 Unicode c program text,with very long lines a-8.strings: UTF-8 Unicode c program text,with very long lines b-16be.strings: Big-endian UTF-16 Unicode c program text,with very long lines b-16le-BAD-fromUTF16BE.strings: data b-16le-BAD-fromUTF8.strings: data $ od -c a-16.strings | head 0000000 377 376 / * f 001 E S K $ od -c a-8.strings | head 0000000 / * * * Č ** ESKY ( JVO $ od -c b-16be.strings | head 0000000 376 377 / * * * 001 f E $ od -c b-16le-BAD-fromUTF16BE.strings | head 0000000 / * * * f 001 E S $ od -c b-16le-BAD-fromUTF8.strings | head 0000000 / * * * f 001 E S
很明显,当我运行转换为UTF-16LE时,BOM就会丢失。 任何帮助吗?
启动一个屏幕(unix命令)+在1个命令中运行一个命令?
删除长达30天的文件长文件名和长文件名
如何在Windows命令提示符下仅使用带有换行符的pipe道(无文件)发送电子邮件?
unix工具从文件中删除重复的行
使用Windows批处理命令configurationJenkins CI作业和FreeFileSync批处理
UTF-16LE告诉iconv生成没有BOM(字节顺序标记)的little-endian UTF-16。 显然,它假定您自从指定了LE ,BOM就没有必要了。
UTF-16告诉它用 BOM生成UTF-16文本(以本地机器的字节顺序)。
如果你在一个小端机器上,我没有办法告诉iconv生成带有BOM的big-endian UTF-16,但是我可能会错过一些东西。
我发现file命令不能识别没有BOM的UTF-16文本,而你的编辑器也可能不会。 但是,如果运行iconv -f UTF-16LE -t UTF_8 b-16 strings ,则应该获得原始文件的有效UTF-8版本。
尝试在文件上运行od -c以查看其实际内容。
更新:
它看起来像是在一个big-endian的机器上(x86是little-endian),并且你正试图用BOM生成一个little-endian的UTF-16文件。 那是对的吗? 据我所知, iconv不会直接这样做。 但是,这应该工作:
( printf "xffxfe" ; iconv -f utf-8 -t utf-16le UTF-8-FILE ) > UTF-16-FILE
printf的行为可能取决于您的语言环境设置; 我有LANG=en_US.UTF-8 。
(谁能提出一个更优雅的解决方案?)
另一个解决方法是, 如果您知道-t utf-16生成的输出的字节顺序:
iconv -f utf-8 -t utf-16 UTF-8-FILE | dd conv=swab 2>/dev/null
我首先转换为UTF-16 ,如果有必要,Keith Thompson提到 , UTF-16将预先给出一个字节顺序标记。 然后由于UTF-16没有定义字节序,我们必须使用file来判断它是UTF-16BE还是UTF-16LE 。 最后,我们可以转换为UTF-16LE 。
iconv -f utf-8 -t utf-16 UTF-8-FILE > UTF-16-UNKNowN-ENDIANnesS-FILE FILE_ENCODING="$( file --brief --mime-encoding UTF-16-UNKNowN-ENDIANnesS-FILE )" iconv -f "$FILE_ENCODING" -t UTF-16LE UTF-16-UNKNowN-ENDIANnesS-FILE > UTF-16-FILE
这可能不是一个优雅的解决方案,但我发现了一个手动的方式来确保正确的转换我的问题,我相信是类似于这个主题的主题。
问题:我从用户那里得到了一个文本数据文件,然后我将使用shell脚本(标记化,拆分等)在Linux(特别是Ubuntu)上处理它。 我们调用文件myfile.txt 。 第一个迹象表明,我得到的东西是错误的是,标记化不起作用。 所以当我在myfile.txt上运行file命令并得到以下内容时,我并不感到惊讶
$ file myfile.txt myfile.txt: Little-endian UTF-16 Unicode text,with very long lines,with CRLF line terminators
如果这个文件是合规的,这里应该是这个对话:
$ file myfile.txt myfile.txt: ASCII text,with very long lines
解决方案:为了使数据文件兼容,以下是经过一些试验和其他步骤的错误后,我发现工作的3个手动步骤。
首先通过vi (或vim )以相同的编码转换为Big Endian。 vi myfile.txt 。 在vi执行:set fileencoding=UTF-16BE然后写出文件。 您可能必须强制:!wq 。
vi myfile.txt (现在应该在utf-16BE中)。 在vi :set fileencoding=ASCII然后写出文件。 再一次,你可能不得不用!wq强制写入。
运行dos2unix转换器: d2u myfile.txt 。 如果你现在运行file myfile.txt你现在应该看到一个输出或者更熟悉的东西,并保证:
myfile.txt: ASCII text,with very long lines
而已。 这对我来说是myfile.txt ,然后我可以运行myfile.txt处理bash shell脚本。 我发现我不能跳过第2步。也就是说,在这种情况下,我不能直接跳到第3步。希望你能找到这个信息有用; 希望有人可以通过sed或类似的东西来实现自动化。 干杯。
今天关于如何在Java中将UTF-8转换为US-Ascii的介绍到此结束,谢谢您的阅读,有关java – 如何在Android中将字符串转换为UTF-8?、从UTF-8转换为ASCII的Python脚本、你如何在C中将UINT8转换为UINT32?、使用iconv将UTF8转换为UTF16等更多相关知识的信息可以在本站进行查询。
本文标签: