有没有办法判断一个String当前的编码格式???

loveyousomuch 2005-04-28 06:26:56
如有一个String型变量,
能不能得到它目前的编码格式,然后在做相应的转换??
...全文
6227 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigc2000 2005-05-09
  • 打赏
  • 举报
回复
任意给定的一个串,无法判断它的编码格式,但是可以得到系统的默认编码格式。
好比加密机制,输入端,输出端,输出端无法知道输入端进行了何种加密,除非约定好了,
vvip 2005-05-08
  • 打赏
  • 举报
回复
从你问题看,你没有明白java的编码方式原理,java的JVM的缺省编码方式由系统的“本地语言环境”设置确定,和操作系统的类型无关

在JAVA源文件-->JAVAC-->Class-->Java-->getBytes()-->new String()-->显示的过程中,每一步都有编码的转换过程,这个过程总是存在的,只是有的时候用默认的参数进行

JAVAC是以系统默认编码读入源文件,然后按UNICODE进行编码的。在JAVA运行的时候,JAVA也是采用UNICODE编码的,并且默认输入和输出的都是操作系统的默认编码,也就是说在new String(bytes[,encode])中,系统认为输入的是编码为encode的字节流,换句话说,如果按encode来翻译bytes才能得到正确的结果,这个结果最后要在JAVA中保存,它还是要从这个encode转换成Unicode,也就是说有bytes-->encode字符-->Unicode字符的转换;而在String.getBytes([encode])中,系统要做一个Unicode字符-->encode字符-->bytes的转换。


以下是取得系统缺省编码方式
public encoding {
public static void main(String[] args) {
Properties initProp = new Properties(System.getProperties());
System.out.println("file.encoding:" + initProp1.getPropert("file.encoding"));
System.out.println("file.encoding:" + initProp1.getPropert("user.language"));

}
}
总之,java 编码都是Unicode 因此, 我们只要知道当前系统缺省的编码方式,然后Unicode编码转换成当前系统缺省的编码方式
MARS.nEIL 2005-05-08
  • 打赏
  • 举报
回复
学习.
ses127127 2005-05-08
  • 打赏
  • 举报
回复
学习
yorkchen 2005-05-08
  • 打赏
  • 举报
回复
GX
loveyousomuch 2005-05-08
  • 打赏
  • 举报
回复
看来现在还没有一个好的方法来解决这个问题!
要顶一下
mingyang47 2005-05-07
  • 打赏
  • 举报
回复
不知道,也要顶一下。
WinFastNcr 2005-05-07
  • 打赏
  • 举报
回复
xiangqianchong 2005-05-07
  • 打赏
  • 举报
回复
学习
DrDragon 2005-05-07
  • 打赏
  • 举报
回复
学习ing!
miukoo 2005-05-07
  • 打赏
  • 举报
回复
这个方法能把你输入的汉字,或者字母变成数字显示出来,不知道是不是你想要的结果!!!
import javax.swing.*;
public class Love
{
public static void main(String[] args)
{
String s=JOptionPane.showInputDialog("请输入字符串:");
int d;
d=s.length();
char ch[]=new char[d];
int n[]=new int[d];
for(int i=0;i<d;i++)
{
ch[i]=s.charAt(i);
n[i]=ch[i]-'0';
}
for(int w=0;w<d;w++)
{
System.out.print(n[w]);
}
}
}
midthinker 2005-05-07
  • 打赏
  • 举报
回复
工程中是否有配置文件可以查询啊?
@.@||~
hainang1234 2005-05-07
  • 打赏
  • 举报
回复
怎么就没有人讨论了吗?
还没搞定呀!
阿土伯伯 2005-04-29
  • 打赏
  • 举报
回复
如果你不指定编码方式的话,String的编码方式是从操作系统的file.encoding这个环境变量中获取编码方式的。
大数据菜 2005-04-29
  • 打赏
  • 举报
回复
Thinking……
WinFastNcr 2005-04-29
  • 打赏
  • 举报
回复
loveyousomuch 2005-04-29
  • 打赏
  • 举报
回复
现在的人怎么都不热心了,要回答也详细一点嘛!
littlecpu 2005-04-28
  • 打赏
  • 举报
回复
我觉得很奇怪啊,String 都是UNICODE的,你这是不知那一些出了问题,得到了一些垃圾内容.其实从byte流到char流,一般都有地方设置charset的.就算没有,你也可以用io里的InputStreamRead/Writer给iostream给加一个chartset.

例如jsp来说吧,就有request.setCharxxx方法的.
jihanzhong 2005-04-28
  • 打赏
  • 举报
回复
没什么意外下!比如你另外指定了编码格式
jihanzhong 2005-04-28
  • 打赏
  • 举报
回复
跟文件的编码是一样的!
加载更多回复(8)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧