NetBeans如何设定默认编码 - 技术问答

NetBeans如何设定默认编码 - 技术问答,第1张

原帖由

2009-3-9

17:22

发表

[i][/url]项目右键属性,第一页源右边就有编码设置

[/b]不用项目。就直接打开一个文件。。但是没在项目里。是不是没办法?

首先,我们看getBytes(); JDK文档注释为:

Returns a new byte array containing the characters of this string encoded using the system's default charset

即根据系统的默认编码方式,返回一个byte数组,byte和char一样吗,显然不一样。下面我们测试一下不同字符集,getBytes()的行为。

以下是我运行的结果,我的系统是linux,字符串就是你的哈哈哈:

字符集:Big5 getBytes()长度6

数组内容:

-85 -94 -85 -94 -85 -94

字符集:Big5-HKSCS getBytes()长度6

数组内容:

-85 -94 -85 -94 -85 -94

字符集:EUC-JP getBytes()长度6

数组内容:

-46 -3 -46 -3 -46 -3

字符集:EUC-KR getBytes()长度6

数组内容:

-7 -21 -7 -21 -7 -21

字符集:GB18030 getBytes()长度6

数组内容:

-71 -2 -71 -2 -71 -2

字符集:GB2312 getBytes()长度6

数组内容:

-71 -2 -71 -2 -71 -2

字符集:GBK getBytes()长度6

数组内容:

-71 -2 -71 -2 -71 -2

字符集:IBM-Thai getBytes()长度3

数组内容:

63 63 63

字符集:IBM00858 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01140 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01141 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01142 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01143 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01144 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01145 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01146 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01147 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01148 getBytes()长度3

数组内容:

63 63 63

字符集:IBM01149 getBytes()长度3

数组内容:

63 63 63

字符集:IBM037 getBytes()长度3

数组内容:

63 63 63

字符集:IBM1026 getBytes()长度3

数组内容:

63 63 63

字符集:IBM1047 getBytes()长度3

数组内容:

63 63 63

字符集:IBM273 getBytes()长度3

数组内容:

63 63 63

字符集:IBM277 getBytes()长度3

数组内容:

63 63 63

字符集:IBM278 getBytes()长度3

数组内容:

63 63 63

字符集:IBM280 getBytes()长度3

数组内容:

63 63 63

字符集:IBM284 getBytes()长度3

数组内容:

63 63 63

字符集:IBM285 getBytes()长度3

数组内容:

63 63 63

字符集:IBM297 getBytes()长度3

数组内容:

63 63 63

字符集:IBM420 getBytes()长度3

数组内容:

63 63 63

字符集:IBM424 getBytes()长度3

数组内容:

63 63 63

字符集:IBM437 getBytes()长度3

数组内容:

63 63 63

字符集:IBM500 getBytes()长度3

数组内容:

63 63 63

字符集:IBM775 getBytes()长度3

数组内容:

63 63 63

字符集:IBM850 getBytes()长度3

数组内容:

63 63 63

字符集:IBM852 getBytes()长度3

数组内容:

63 63 63

字符集:IBM855 getBytes()长度3

数组内容:

63 63 63

字符集:IBM857 getBytes()长度3

数组内容:

63 63 63

字符集:IBM860 getBytes()长度3

数组内容:

63 63 63

字符集:IBM861 getBytes()长度3

数组内容:

63 63 63

字符集:IBM862 getBytes()长度3

数组内容:

63 63 63

字符集:IBM863 getBytes()长度3

数组内容:

63 63 63

字符集:IBM864 getBytes()长度3

数组内容:

63 63 63

字符集:IBM865 getBytes()长度3

数组内容:

63 63 63

字符集:IBM866 getBytes()长度3

数组内容:

63 63 63

字符集:IBM868 getBytes()长度3

数组内容:

63 63 63

字符集:IBM869 getBytes()长度3

数组内容:

63 63 63

字符集:IBM870 getBytes()长度3

数组内容:

63 63 63

字符集:IBM871 getBytes()长度3

数组内容:

63 63 63

字符集:IBM918 getBytes()长度3

数组内容:

63 63 63

可以看出,不同编码集下,不仅getBytes长度不同,连数组的内容都不一样。

下面测试"aaa":

字符集:Big5 getBytes()长度3

数组内容:

97 97 97

字符集:Big5-HKSCS getBytes()长度3

数组内容:

97 97 97

字符集:EUC-JP getBytes()长度3

数组内容:

97 97 97

字符集:EUC-KR getBytes()长度3

数组内容:

97 97 97

字符集:GB18030 getBytes()长度3

数组内容:

97 97 97

字符集:GB2312 getBytes()长度3

数组内容:

97 97 97

字符集:GBK getBytes()长度3

数组内容:

97 97 97

字符集:IBM-Thai getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM00858 getBytes()长度3

数组内容:

97 97 97

字符集:IBM01140 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01141 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01142 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01143 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01144 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01145 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01146 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01147 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01148 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM01149 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM037 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM1026 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM1047 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM273 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM277 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM278 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM280 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM284 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM285 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM297 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM420 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM424 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM437 getBytes()长度3

数组内容:

97 97 97

字符集:IBM500 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM775 getBytes()长度3

数组内容:

97 97 97

字符集:IBM850 getBytes()长度3

数组内容:

97 97 97

字符集:IBM852 getBytes()长度3

数组内容:

97 97 97

字符集:IBM855 getBytes()长度3

数组内容:

97 97 97

字符集:IBM857 getBytes()长度3

数组内容:

97 97 97

字符集:IBM860 getBytes()长度3

数组内容:

97 97 97

字符集:IBM861 getBytes()长度3

数组内容:

97 97 97

字符集:IBM862 getBytes()长度3

数组内容:

97 97 97

字符集:IBM863 getBytes()长度3

数组内容:

97 97 97

字符集:IBM864 getBytes()长度3

数组内容:

97 97 97

字符集:IBM865 getBytes()长度3

数组内容:

97 97 97

字符集:IBM866 getBytes()长度3

数组内容:

97 97 97

字符集:IBM868 getBytes()长度3

数组内容:

97 97 97

字符集:IBM869 getBytes()长度3

数组内容:

97 97 97

字符集:IBM870 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM871 getBytes()长度3

数组内容:

-127 -127 -127

字符集:IBM918 getBytes()长度3

数组内容:

-127 -127 -127

可以看出对于字母,我这里支持的字符集都返回了3,而数组内容有些是97,另外一些是127,97是我们熟悉的ASCii值,127我就不得而知了。

以上测试说明:不同字符集对于字母和汉字(还包括其他非拉丁文字)编码方式是不同的,包括使用单字节还是双字节,也包括如何编码。

测试代码如下:

Map<String, Charset> map = CharsetavailableCharsets();

Set<String> keySet = mapkeySet();

for(String charSetName: keySet)

{

Systemoutprintln("字符集:" + charSetName + " getBytes()长度" + sgetBytes(mapget(charSetName))length);

Systemoutprintln("数组内容:");

for(byte b: sgetBytes(mapget(charSetName)))

{

Systemoutprint(b + " ");

}

Systemoutprintln();

}

下面的问题是char:

int c = 'A';

int d = '哈';

char e = (char) 12345678;

c = e;

Systemoutprintln(e);

12345678显然是超过了char范围了,不过呢它被截断成2字节,并且根据当前的字符集,打印出来一个汉字。

大概就是这样了

总结,如果你写char ,不管赋值为字母还是汉字还是数字,都占两个字节,只不过高位有些为0

对于字符串,getBytes返回默认编码集下的数组,你可以指定参数获取其他字符集的结果,结果是五花八门的。

如果要了解字符集的编码规范,还请百度相关主题,我这里我不做更多的验证了。

java中编码:URLEncoderencode(strUri,"utf-8");

java中解码码:URLDecoderdecode(strUri,"utf-8");

java编码和解码        

流读取文件,具有转换编码功能的有:OutputStreamWriter和InputStreamReader,

构造器有如:

InputStreamReader(InputStream in, String charsetName)

创建使用指定字符集的 InputStreamReader。

OutputStreamWriter(OutputStream out, String charsetName)

创建使用指定字符集的 OutputStreamWriter。

处理字符串编码问题:

重新对获取的字符串进行编码:Byte[] bytes = strgetBytes(String encodeCharsetNam);

重新对bytes进行解码,创建新的字符串对象:str = new String(Byte[] bytes,String decodeCharsetName);

一般结合使用:str = new String(strgetBytes(String encodeCharsetName),String decodeCharsetName);

例如:resultName=new String(usernamegetBytes("ISO-8859-1"),"UTF-8");

还可以加入判断:

if(!CharsetforName("gbk")newEncoder()canEncode(str)){str = new Strin(strgetBytes("ISO-8859-1"),"UTF-8");}else{str = new String(strgetBytes("ISO-8859-1"),"gbk");}

处理请求参数传递编码问题:

java中编码:URLEncoderencode(strUri,"utf-8");

java中解码码:URLDecoderdecode(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中解码: javanetURLDecoderdecode(strUri,"UTF-8");

js中编码两次的问题:如果使用一次编码,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码值,两位两位取出后进行解码。

然后再传递给处理页面,然后由处理页面进行再次解码,这样前面就缺少了一次编码过程,所以前面需要连续两次编码。

首先说一下 这篇文章主要是针对 Java 开发者的 如果是做 Windows 开发 那么基本上没有办法把工作环境移植到 Ubuntu 上的(当然也不能说死 也许以后可以使用 WINE 试试 呵呵)

系统默认编码 我们知道在中文 Windows 下一般来说系统的默认编码是 GBK 从 Java 开发的角度来说 就是在进行诸如 Java 源代码编译 文件读写等 *** 作时 默认使用的编码是 GBK; 而我们参照一般的 Ubuntu 中文安装文档 可能会建议将默认的语言设置为 zh_CN UTF 这样会带来一些问题 比如我在 Windows 使用 Eclipse 时的编辑器的默认编码是 GBK 但是在 Ubuntu 下面就是 UTF 同样是使用 Eclipse 在 Windows 下的中文文档到了 Ubuntu 中会产生乱码 必须手工逐个文档设置属性中的编码为 GBK 才可以正常; 一些测试代码也是以默认编码读取文件的 这些代码读取出来的文件内容也会包含乱码 所以 最好是将系统的默认编码设置为 GBK 这样和 Windows 下面的开发环境最接近 设置的方法应该不止一种 我采用的是编辑 /etc/environment 改成这个样子: 中文字体 Ubuntu 默认安装后的中文字体不是点阵字体 因此在小字显示的时候模模糊糊比较难看 而且 在浏览网页时 无法显示中文粗体 关于字体美化的文章网上太多了 有些是采用 Windows 字体来进行的; 最近 文泉驿 ( ) 的开源点阵字体受到很多好评 而且点阵字体正好合适用于小字的显示 我用的是最新的 beta 版( pcf update ) 按照 文泉驿点阵宋体安装指南 上的步骤安装 修改了 nf 也执行了 fc cache f v 安装过程还算顺利 就是有一点需要注意 那就是字体一定要放在 /usr/share/fonts/ 的子目录下面 不然执行 fc cache 不会起作用的 安装完毕后需要配置一下系统的默认字体 Firefox 也需要配置一下字体 效果还是不错的(见下面截图) Java(Swing)程序的字体 这个我主要参考了 最简单的对JDK 的中文乱码处理方法 按照其中更简单的那个方法 在 $JAVA_HOME/jre/lib/fonts/ 目录下创建 fallback 目录 并把一个中文的 TTF 字体链接或者安装到 fallback 目录下就可以了 和参考文章说的稍有差别 我是下载了文泉驿 ttf update 的 TTF 字体 直接解压后复制到 fallback 目录下 接着执行 mkfontdir 和 mkfontscale 果然问题得以解决; 现在 NetBeans 或者 JMeter 的 打开 文件对话框中的按钮和标签就正确显示出中文了 安装在 Ubuntu 上面的 NetBeans : 存在中文问题的 打开项目 对话框: 经过处理后可以正确显示中文的对话框: lishixinzhi/Article/program/Java/hx/201311/27094

乱码是因为cmd里面编码是不对的。你的安装路径有中文。而cmd里面编码是当然你可以通过修改:右键-属性-选项=> 当前代码页 你可以看到你的编码。这个的编码是根据你系统的默认编码来的。chcp 65001 就是换成UTF-8代码页chcp 936 可以换回默认的GBK

MySQL会出现中文乱码的原因不外乎下列几点:

1server本身设定问题。

2table的语系设定问题(包含character与collation)

3客户端程式(例如php)的连线语系设定问题强烈建议使用utf8。utf8可以兼容世界上所有字符!

一、避免创建数据库及表出现中文乱码和查看编码方法

1、创建数据库的时候:CREATE DATABASE `test`

CHARACTER SET 'utf8'

COLLATE 'utf8_general_ci';

2、建表的时候 CREATE TABLE `database_user` (

`ID` varchar(40) NOT NULL default '',

`UserID` varchar(40) NOT NULL default '',

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这2个设置好了,基本就不会出问题了,即建库和建表时都使用相同的编码格式。

但是如果已经建了库和表可以通过以下方式进行查询。

1查看默认的编码格式:

mysql> show variables like "%char%";

+--------------------------+---------------+

| Variable_name | Value |

+--------------------------+---------------+

| character_set_client | gbk |

| character_set_connection | gbk |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | gbk |

| character_set_server | utf8 |

| character_set_system | utf8 |

+--------------------------+-------------+

注:以前2个来确定,可以使用set names utf8,set names gbk设置默认的编码格式;

执行SET NAMES utf8的效果等同于同时设定如下:

SET character_set_client='utf8';

SET character_set_connection='utf8';

SET character_set_results='utf8';

2查看test数据库的编码格式:

mysql> show create database test;

+------------+------------------------------------------------------------------------------------------------+

| Database | Create Database |

+------------+------------------------------------------------------------------------------------------------+

| test | CREATE DATABASE `test` /!40100 DEFAULT CHARACTER SET gbk / |

+------------+------------------------------------------------------------------------------------------------+

3查看yjdb数据库的编码格式:

mysql> show create table yjdb;

| yjdb | CREATE TABLE `yjdb` (

`sn` int(5) NOT NULL AUTO_INCREMENT,

`type` varchar(10) NOT NULL,

`brc` varchar(6) NOT NULL,

`teller` int(6) NOT NULL,

`telname` varchar(10) NOT NULL,

`date` int(10) NOT NULL,

`count` int(6) NOT NULL,

`back` int(10) NOT NULL,

PRIMARY KEY (`sn`),

UNIQUE KEY `sn` (`sn`),

UNIQUE KEY `sn_2` (`sn`)

) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |

二、避免导入数据有中文乱码的问题

1:将数据编码格式保存为utf-8

设置默认编码为utf8:

set names utf8;

设置数据库db_name默认为utf8:

ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

设置表tb_name默认编码为utf8:

ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

导入:

LOAD DATA LOCAL INFILE 'C:\\utf8txt' INTO TABLE yjdb;

2:将数据编码格式保存为ansi(即GBK或GB2312)

设置默认编码为gbk:

set names gbk;

设置数据库db_name默认编码为gbk:

ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

设置表tb_name默认编码为gbk:

ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

导入:

LOAD DATA LOCAL INFILE 'C:\\gbktxt' INTO TABLE yjdb;

注:1UTF8不要导入gbk,gbk不要导入UTF8;

2dos下不支持UTF8的显示;

三、解决网页中乱码的问题

将网站编码设为 utf-8,这样可以兼容世界上所有字符。

如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为 GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK。

1编辑/etc/mycnf ,在[mysql]段加入default_character_set=utf8;

2在编写Connection URL时,加上useUnicode=true&characterEncoding=utf-8参;

3在网页代码中加上一个"set names utf8"或者"set names gbk"的指令,告诉MySQL连线内容都要使用utf8或者gbk。

以上就是关于NetBeans如何设定默认编码 - 技术问答全部的内容,包括:NetBeans如何设定默认编码 - 技术问答、关于java字符编码问题、java中编码与解码分别指什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9423706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存