- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在获取 ucs-2 编码的 XML 文件。我想使用 java 代码将此编码转换为 UTF-8 或 UTF -16 或 ANSI。
您能帮忙吗?
最佳答案
我必须做类似的事情,这就是我想到的(我删除了一些方法,但这对于您的用例来说应该足够了)。顺便说一句,据我所知 UCS-2 可能与 UTF-16 相同(前提是字节顺序相同)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
enum EncodingType {
UTF8(0),
UTF16BE(1),
UTF16LE(2),
ISO_8859_1(3),
ISO_8859_2(4),
UNKNOWN(5);
private final int val;
EncodingType(int val){
this.val= val;
}
public int getIntValue(){
return val;
}
};
public class TextConverter{
public EncodingType encodingType;
private EncodingType inputEncoding = EncodingType.UTF8;
private EncodingType outputEncoding = EncodingType.UTF8;
public final static String[] encodingNames = { "UTF-8","UTF-16BE","UTF-16LE", "ISO-8859-1","ISO-8859-2", "UNKNOWN" };
//the check methods are only required for querying file encodings but don't fully rely on them because not all encodings have header bytes and you can change encoding on a file
private final static boolean checkUTF8(byte[] header){
return ((header[0]&0xFF)==0xEF && (header[1]&0xFF)==0xBB && (header[2]&0xFF)==0xBF)?true:false;
}
private final static boolean checkUTF16BE(byte[] header){
return ((header[0]&0xFF)==0xFE && (header[1]&0xFF)==0xFF)?true:false;
}
private final static boolean checkUTF16LE(byte[] header){
return ((header[0]&0xFF)==0xFF && (header[1]&0xFE)==0xFE)?true:false;
}
public EncodingType getInputEncoding(){
return inputEncoding;
}
public EncodingType getOutputEncoding(){
return outputEncoding;
}
public void setInputEncoding(EncodingType enc){
this.inputEncoding = enc;
}
public void setOutputEncoding(EncodingType enc){
this.outputEncoding = enc;
}
/**
* writes a file from a string using the encoding specified in outputEncoding member variable
* @param fileName
* @param content
* @throws IOException
*/
public void writeFile(String fileName, String content)throws IOException{
BufferedWriter bw=null;
try {
File file = new File(fileName);
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), encodingNames[outputEncoding.getIntValue()])) ;
bw.write(content);
}
catch(Exception e){
System.out.println(e);
}finally {
if(bw!=null)
bw.close();
}
}
/**
* this method reads a file and converts it to a string using the encoding specified in inputEncoding member variable
* use the setInputEncoding(EncodingType ) to set the encoding
* @param fileName
* @return
* @throws IOException
*/
public String readFile(String fileName) throws IOException{
String fileContent="";
String del = System.getProperty("line.separator");
BufferedReader br=null;
String encoding = encodingNames[inputEncoding.getIntValue()];
try {
File file = new File(fileName);
br = new BufferedReader(new InputStreamReader(new FileInputStream(file), encoding)) ;
String line = null;
for ( line = br.readLine(); line != null; line = br.readLine())
{
fileContent+=(line+del);
}
}
catch(Exception e){
System.out.println(e);
}finally {
if(br!=null)
br.close();
}
/*String converted = convertToAllowedChars(fileContent);
System.out.println("FILE CONTENT");
System.out.println(fileContent);*/
return fileContent;
}
}
您还可以将所有成员设为静态,因为这对您来说可能更有意义。当然,您可以以任何您认为合适的方式修改此代码。
关于java - 如何使用java将ucs2编码文件转换为UTF-8或UTF-16或ANSI编码格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39656286/
我有这个 UC: this.show = function() { ... var myvar = "Text of the var." this.Property1 = m
在浏览 unicode 文档时,我有时会看到术语 UTF-16 可与 UCS-2 互换使用,也可与 UTF-32 和 UCS-4 互换使用。我想知道 UTF-8 是否也有一个很酷的昵称,比如 UCS-
我有 50% 的流量来自 UC 浏览器。在新版本的 UC 浏览器中看不到谷歌广告,那么我如何从我的网站获得良好的收入? 我过去 7 天使用过 UC Union 广告网络,但它产生了 0 美元的收入。我
ucs-4字符'🤣'的unicode值为0001f923,复制到java代码中时会自动更改为\uD83E\uDD23对应的值在 IntelliJ IDEA 中。 Java仅支持ucs-2,因此发生了
正如标题所说的那样。 $ ./configure --help | grep -i ucs --enable-unicode[=ucs[24]] 查了官方文档,发现是这样的: sys.maxuni
只要我没记错,UCS 和 BFS 是一样的,唯一的区别是它不是扩展最浅的节点,而是扩展路径成本最低的节点。 (也为此使用 PriorityQueue 而不是 Queue)所以我复制了我的 BFS 代码
我正在尝试编译/构建我的项目,但我在下面收到此错误: [dcc32 fatal error ] 不支持 F2438 UCS-4 文本编码。转换为 UCS-2 或 UTF-8 IDE 没有显示我需要转换
下面是一个简单的标记。谁能帮我写一个脚本,该脚本仅在 uc mini 浏览器中显示带有“信息框”类的 div。它应该隐藏在浏览器的其余部分。 UC Mini .info-box { d
最近几天我一直被这个问题困扰,我有一个使用 Angular 构建的单页应用程序网站。 我在网站的一个部分实现了 div 的水平滚动(旋转木马类型 View ),在其他浏览器上运行良好。 然而,在 UC
我已经安装了来自 Entrust 的 UC 多域 SSL 证书,用于两个 OpenCart 安装和一个公司域,所有这些都托管在同一 IP。 我的证书上有 3 个域,顺序如下 www.example.c
我目前正在处理的项目需要与我们不制作的客户端系统交互,因此我们无法控制数据的发送方式。问题是在 C# 中工作,它似乎对 UCS-2 没有任何支持,对 big-endian 的支持也很少。 (据我所知)
我试图在我的 42 个字符密码中随机获取小写/大写。不知何故我反而得到: ucclcjuczlclucmlc0lcdlc5lc0ucdlccucmucquc5ucslc4lckucxuctlcvlcq
我正在尝试构建此 UI,因为浏览器屏幕长时间停留在一个部分并且无法在网络上找到任何相关主题。我想实现作为对话框弹出的 UC 浏览器设置/汉堡菜单。我如何开始这件事 images link contai
这是我的代码: ` .column1{ width:calc(100% - 100px); float:left; } .column2{ width:100px; float:left; } `
我的问题是特定于浏览器的。我的 css 在移动设备上的 UC 浏览器中无法像在其他浏览器中一样正常工作。 我想将占位符垂直居中对齐。但令我惊讶的是,垂直对齐似乎有点偏离。 这是我从UC浏览器截取的截图
我有一个文本文件,它是使用某些 Microsoft 报告工具创建的。文本文件在开头包含 BOM 0xFFFE,然后是 ASCII 字符输出,字符之间有空值(即“F.i.e.l.d.1.”)。我可以使用
我想在 Go 中翻译我的 python 程序,将 unicode 字符串转换为 UCS-2 HEX 字符串。 在 python 中,这很简单: u"Bien joué".encode('utf-16-
虽然researching options用于在可能很大的SQL Server数据库中存储大多数英语但有时不是的数据,但我倾向于将大多数字符串数据存储为UTF-8编码。 但是,Microsoft之所以
我在我的项目中使用 ATMEGA128 微 Controller 和 AVR studio。我正在使用接收中断 ISR_USART0 来接收 8 个字节的数据作为数据包,并且在完成接收数据后调用该中断
我已经制作了这个脚本,但我有一个问题: $(document).ready(function() { $('html').html(function(i, v) { var searchM
我是一名优秀的程序员,十分优秀!