www.91084.com

GVKun编程网logo

如何在Java中将UTF-8转换为US-Ascii

7

在这篇文章中,我们将带领您了解如何在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中将UTF-8转换为US-Ascii

我们有一个系统,客户(主要是欧洲人)输入的文本(使用UTF-8)必须分发到不同的系统,其中大多数接受UTF-8,但是现在我们还必须将文本分发到仅接受美国的美国系统。
-Ascii 7位

因此,现在我们需要将所有欧洲字符翻译成最近的美国Ascii。是否有任何Java库可帮助完成此任务?

现在,我们刚刚开始添加到转换表中,在该表中Å(瑞典AA)->
A等,在找不到与输入字符匹配的位置的情况下,我们将其记录下来并替换为问号并尝试为下一个版本修复该问题,但效率似乎很低,其他人之前必须做过类似的事情。

java – 如何在Android中将字符串转换为UTF-8?

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);
最佳答案
您可以让Android为您完成工作,方法是将页面读入byte [],然后使用jSoup方法解析String对象.

当您使用正确的String constructor从服务器读取的数据创建字符串时,请不要忘记指定编码.

从UTF-8转换为ASCII的Python脚本

从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?

你如何在C中将UINT8转换为UINT32?

我有一个UINT8类型的值,我想把它作为UINT32.

我的以下代码是否会被认为是正确,有效,高效和安全的?

UINT32 convU8toU32(UINT8 *number) {
  UINT32 result = *number;
  return *result;
}

请注意,我是来自Java世界的C的新角色.

解决方法

函数是正确的(返回*结果中的*的错误;除了),但你甚至不需要它.整数(和其他整数类型)隐式转换为另一个,并且由于UINT32可以表示UINT8可以拥有的每个值,您可以简单地写

UINT32 target = source;

对于一些UINT8源码.

使用static_cast显式转换是可选的;如果转换(可能)缩小,则演员会使一些编译器警告静音.

使用iconv将UTF8转换为UTF16

使用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等更多相关知识的信息可以在本站进行查询。

本文标签: