「java读取ansi」java读取按钮
本篇文章给大家谈谈java读取ansi,以及java读取按钮对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java中如何将gbk装换为ansi
- 2、〈java〉怎么精确判断读取的任意文本的编码格式?utf-i8, unicode,ansi等
- 3、jar文件如何从utf-8转ansi?
- 4、java中编码与解码分别指什么?
- 5、怎样用Java读取TXT文本乱码解决方案
- 6、java读取txt文件时候出现乱码
Java中如何将gbk装换为ansi
对于java,在字符集间进行转换时比较常用的功能,尤其在web应用中。
首先我们要先了解一些知识点:
一、关键技术点:
1、当前流行的字符编码格式有:US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16、GBK、GB2312等,其中GBK、GB2312是专门处理中文编码的。
2、String的getBytes方法用于按指定编码获取字符串的字节数组,参数指定了解码格式,如果没有指定解码格式,则按系统默认编码格式。
3、String的“String(bytes[] bs, String charset)”构造方法用于把字节数组按指定的格式组合成一个字符串对象
二、下面是一个完整的例子,包括了你提问中的gbk转ascii,同时也提供了一些其他字符集间的转码方式,可留存备查:
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final String US_ASCII = "US-ASCII";
/** ISO拉丁字母表 No.1,也叫做ISO-LATIN-1 */
public static final String ISO_8859_1 = "ISO-8859-1";
/** 8 位 UCS 转换格式 */
public static final String UTF_8 = "UTF-8";
/** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
public static final String UTF_16BE = "UTF-16BE";
/** 16 位 UCS 转换格式,Litter Endian(最高地址存放地位字节)字节顺序 */
public static final String UTF_16LE = "UTF-16LE";
/** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
public static final String UTF_16 = "UTF-16";
/** 中文超大字符集 **/
public static final String GBK = "GBK";
public static final String GB2312 = "GB2312";
/** 将字符编码转换成US-ASCII码 */
public String toASCII(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, US_ASCII);
}
/** 将字符编码转换成ISO-8859-1 */
public String toISO_8859_1(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, ISO_8859_1);
}
/** 将字符编码转换成UTF-8 */
public String toUTF_8(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_8);
}
/** 将字符编码转换成UTF-16BE */
public String toUTF_16BE(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, UTF_16BE);
}
/** 将字符编码转换成UTF-16LE */
public String toUTF_16LE(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16LE);
}
/** 将字符编码转换成UTF-16 */
public String toUTF_16(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16);
}
/** 将字符编码转换成GBK */
public String toGBK(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, GBK);
}
/** 将字符编码转换成GB2312 */
public String toGB2312(String str) throws UnsupportedEncodingException {
return this.changeCharset(str,GB2312);
}
/**
* 字符串编码转换的实现方法
* @param str 待转换的字符串
* @param newCharset 目标编码
*/
public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException {
if(str != null) {
//用默认字符编码解码字符串。与系统相关,中文windows默认为GB2312
byte[] bs = str.getBytes();
return new String(bs, newCharset); //用新的字符编码生成字符串
}
return null;
}
/**
* 字符串编码转换的实现方法
* @param str 待转换的字符串
* @param oldCharset 源字符集
* @param newCharset 目标字符集
*/
public String changeCharset(String str, String oldCharset, String newCharset) throws UnsupportedEncodingException {
if(str != null) {
//用源字符编码解码字符串
byte[] bs = str.getBytes(oldCharset);
return new String(bs, newCharset);
}
return null;
}
public static void main(String[] args) throws UnsupportedEncodingException {
ChangeCharset test = new ChangeCharset();
String str = "This is a 中文的 String!";
System.out.println("str:" + str);
String gbk = test.toGBK(str);
System.out.println("转换成GBK码:" + gbk);
System.out.println();
String ascii = test.toASCII(str);
System.out.println("转换成US-ASCII:" + ascii);
System.out.println();
String iso88591 = test.toISO_8859_1(str);
System.out.println("转换成ISO-8859-1码:" + iso88591);
System.out.println();
gbk = test.changeCharset(iso88591, ISO_8859_1, GBK);
System.out.println("再把ISO-8859-1码的字符串转换成GBK码:" + gbk);
System.out.println();
String utf8 = test.toUTF_8(str);
System.out.println();
System.out.println("转换成UTF-8码:" + utf8);
String utf16be = test.toUTF_16BE(str);
System.out.println("转换成UTF-16BE码:" + utf16be);
gbk = test.changeCharset(utf16be, UTF_16BE, GBK);
System.out.println("再把UTF-16BE编码的字符转换成GBK码:" + gbk);
System.out.println();
String utf16le = test.toUTF_16LE(str);
System.out.println("转换成UTF-16LE码:" + utf16le);
gbk = test.changeCharset(utf16le, UTF_16LE, GBK);
System.out.println("再把UTF-16LE编码的字符串转换成GBK码:" + gbk);
System.out.println();
String utf16 = test.toUTF_16(str);
System.out.println("转换成UTF-16码:" + utf16);
String gb2312 = test.changeCharset(utf16, UTF_16, GB2312);
System.out.println("再把UTF-16编码的字符串转换成GB2312码:" + gb2312);
}
}
〈java〉怎么精确判断读取的任意文本的编码格式?utf-i8, unicode,ansi等
new String(a.getBytes("ISO-8859-1"),"GB2312")
以单字节编码方式获取字符串流, 然后转中文格式,或者
new String(a.getBytes("ISO-8859-1"),"UTF-8")
GBK是中国的解析字符标准,UTF-8是世界标准
jar文件如何从utf-8转ansi?
功能:转换ANSI【JAVA中GBK编码】编码的.java源文件为UTF-8格式,未处理异常,运行前确认目录存在,且原编码格式为ANSI
*
* @author bwgang
*/
package bwgang;
import java.io.*;
import java.util.Vector;
public class AnsiToUtf8 {
public static void main(String[] args) throws UnsupportedEncodingException, IOException {
ReadFileName tmp=new ReadFileName();
VectorString vec=tmp.FileNameOftype("E:\\workspace\\Interface_JAVA\\src", ".java");
for (int i=0;ivec.size(); i++){
System.out.println(vec.get(i));
change(vec.get(i));
}
}
public static void change(String filepath) throws UnsupportedEncodingException, IOException{
BufferedReader buf = null;
OutputStreamWriter pw=null;
String str = null;
String allstr="";
//用于输入换行符的字节码
byte[] c=new byte[2];
c[0]=0x0d;
c[1]=0x0a;
String t=new String(c);
buf=new BufferedReader(new InputStreamReader(new FileInputStream(filepath), "GBK"));
while((str = buf.readLine()) != null){
allstr=allstr+str+t;
}
buf.close();
pw =new OutputStreamWriter(new FileOutputStream(filepath),"UTF-8");
pw.write(allstr);
pw.close();
}
}
class ReadFileName {
//存储遍历获取的所有文件名
private VectorString filelist = new VectorString();
//遍历指定路径下的所有文件
//以ArrayList存储于filelist中
private void RefreshFileList(String strpath) {
File dir = new File(strpath);
File[] files = dir.listFiles();
if (files == null)
return;
for (int i = 0; i files.length; i++) {
if (files[i].isDirectory()) {
RefreshFileList(files[i].getAbsolutePath());
} else {
//String strFileName = files[i].getAbsolutePath().toLowerCase();
filelist.add(files[i].getAbsolutePath());
}
}
}
//过滤当前目录下的指定后缀名的文件
//返回Vector
public VectorString FileNameOftype(String strpath2,String filetype){
String strfilename=new String();
VectorString filelistofjava= new VectorString();
//读取指定路径下的所有文件
RefreshFileList(strpath2);
for (int i = 0; i filelist.size(); i++) {
strfilename=filelist.get(i).toString();
strfilename=strfilename.substring(strfilename.length()-5, strfilename.length());
if (strfilename.equals(filetype)) {
filelistofjava.add(filelist.get(i));
}
}
return filelistofjava;
}
}
java中编码与解码分别指什么?
java中编码:URLEncoder.encode(strUri,"utf-8");
java中解码码:URLDecoder.decode(strUri,"utf-8");
java编码和解码
流读取文件,具有转换编码功能的有:OutputStreamWriter和InputStreamReader,
构造器有如:
InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。
OutputStreamWriter(OutputStream out, String charsetName)
创建使用指定字符集的 OutputStreamWriter。
处理字符串编码问题:
重新对获取的字符串进行编码:Byte[] bytes = str.getBytes(String encodeCharsetNam);
重新对bytes进行解码,创建新的字符串对象:str = new String(Byte[] bytes,String decodeCharsetName);
一般结合使用:str = new String(str.getBytes(String encodeCharsetName),String decodeCharsetName);
例如:resultName=new String(username.getBytes("ISO-8859-1"),"UTF-8");
还可以加入判断:
if(!Charset.forName("gbk").newEncoder().canEncode(str)){str = new Strin(str.getBytes("ISO-8859-1"),"UTF-8");}else{str = new String(str.getBytes("ISO-8859-1"),"gbk");}
处理请求参数传递编码问题:
java中编码:URLEncoder.encode(strUri,"utf-8");
java中解码码:URLDecoder.decode(strUri,"utf-8");
js中编码:encodeURIComponent(strUri);encodeURI(strUri);escape(str);
js中解码:decodeURIComponent(strUri);decodeURI(strUri);unescape(str);
补充概念:
URI组件:主机、端口、路径、查询参数、片段等。
URI组件分隔符::/?#[]@,冒号用于分隔协议和主机,/用于分隔主机和 路径,?用于分隔路径和查询参数,用于分隔多个查询参数等。
URI中的不安全字符或保留字符: ! * ‘ ( ) ; : @ = + $ , / ? # [ ] 他们具有特殊作用,例如上面的分隔作用。
URI允许出现的字符:只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符,其他字符均需要经过编码之后才能出现在Url中,比如使用保留字符的原意,而不是特殊作用。
js向java/jsp的编码与解码:
js中编码:encodeURI(encodeURI(strUri));decodeURIComponent(decodeURIComponent(strUri));
java/jsp中解码: java.net.URLDecoder.decode(strUri,"UTF-8");
js中编码两次的问题:如果使用一次编码,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码值,两位两位取出后进行解码。
然后再传递给处理页面,然后由处理页面进行再次解码,这样前面就缺少了一次编码过程,所以前面需要连续两次编码。
怎样用Java读取TXT文本乱码解决方案
默认新建的txt文件的编码为ANSI
把txt文件重新另存为时选择编码为与编辑器IED的编码一致,比如我Intellij IDEA的编辑器右下角显示为 utf-8,然后把要读取的txt文件另存为的时候编码选项选择utf-8,再次运行程序时,就能显示中文。
java读取txt文件时候出现乱码
乱码是因为编解码不匹配造成的。
请重新打开并保存txt文件,保存时选择编码方式为:ANSI。如果使用别的文本编辑器,保存内容时请选择GBK或GB2312。
java读取ansi的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java读取按钮、java读取ansi的信息别忘了在本站进行查找喔。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。