仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1875|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:我的乱码之路――JSP与MySQL交互的中文...

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:48:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践!js|mysql|交互|办理|中文|中文乱码
起首完成了一个StringConvertbean(GBtoISO()和ISOtoGB()两个办法),办理了与MySQL数据库交互的时分的部分中文乱码成绩:在JSP程序中读取MySQL的中文内容,用这两个办法能够办理乱码成绩。

可是从JSP写进到MySQL的中文内容都成了乱码,而且再读出来的时分也显现为“??”,在这里应当呈现了编码转换过程当中的字符信息丧失。忧郁的是,我在命令行窗口中上岸到MySQL后,实行如“INSERTINTOcustomerVALUES(字符,...)”如许的语句时,写进到数据表中的中文内容又是显现一般的!!!数据库利用的字符集是utf8。



受阻屡次,终究发明一条办理成绩的路径:检察MySQL手册的时分,看到一条如许的语句:Toallowmultiplecharactersetstobesentfromtheclient,the"UTF-8"encodingshouldbeused,eitherbyconfiguring"utf8"asthedefaultservercharacterset,orbyconfiguringtheJDBCdrivertouse"UTF-8"throughthecharacterEncodingproperty.



别的,在查阅《MySQL威望指南》时,发明在查询语句中可使用如许的语法将字符串转换到一个给定的字符集:_charsetstr。

个中charset必需是服务器撑持的某个字符集。在本例中,shopdb数据库利用的默许字符集是utf8,因而入手下手测试:

先输出INSERTINTO publishValues(8,_gb2312初等教导出书社)写进后中文酿成“??”

再试INSERTINTO publishValues(8,_gbk初等教导出书社)了局同上

INSERTINTO publishValues(8,_utf8初等教导出书社)这下更爽性,甚么都没有!!



  快疯了!!没举措,用showcharacterset;命令检察MySQL撑持的字符集,心想我都试一遍总有一个能乐成吧。扫瞄了一下,发明没有几个熟习的字符集,就只剩下一个latin1(ISO-8859-1)对照罕见了,不会是它吧,一试之下公然即是。

INSERTINTO publishValues(8,_latin1初等教导出书社)输出中文可以准确显现。



  这下总算找到办法了,把Tomcat下设置的数据库毗连池的url改成"...characterEncoding=UTF-8",然后把写进数据库的中文内容用

Strings2=newString(s1.getBytes("gb2312"),"ISO-8859-1")举行转码,个中s1为中笔墨符串.然后再写进到数据库统统显现一般。



  为办理这个成绩检察了n多材料,现作一个总结:因为字符集和字符编码体例的分歧,在OS和程序之间传送数据(特别是multiplecharactersets中的数据)时便会发生乱码和字符信息的丧失.办理这个成绩的关头即是懂得数据输入端和吸收端利用的字符集和字符编码体例,假如这两种编码体例分歧,便必要在数据出口或出口处举行转码。一样平常的说,在编写代码,编译,和运转时代城市字符数据的传送,因而必要出格当心。

 在编写代码的时分,你大概会利用某种开辟工具,比方我正在利用的Eclipse.也许在写的时分统统一般,但是一旦保留后再次翻开文档,一切的中笔墨符都酿成了乱码。这是由于在编写的时分,这些字符数据都在内存的某个stream中,ok,这没成绩,但是保留的时分这个stream中的数据会被写进到硬盘,利用的就是你的开辟工具默许的编码体例,假如很不幸你的开辟工具默许编码体例是ISO-8859-1,中笔墨符信息就不克不及准确地存储。Eclipse中能够如许检察并修正默许字符编码体例:Project->Properties->info,这里有"defaultencodingfortextfile"。假如设置为GBK,那末编写代码并保留这关就过了。

 关于JSP程序而言,编写完代码后就交给Container,起首它们会被转成.java文件,然后编译成.class才干提交给服务器实行.这个历程也存在字符编码成绩.java编译器(javac)利用操纵体系的言语情况作为默许的字符编码体例,JRE(JavaRuntimeEnvironment)也是如许。只要当编译和运转情况的字符编码体例与存储源文件的编码体例不异时,中笔墨符才干准确地显现。不然就必要在运转时举行转码,使它们利用兼容的编码。这里的设置能够分为几个条理:操纵体系层撑持的言语,这是最主要的,由于它会影响JVM的默许字符编码体例,同时对字符的显现,如字体等有间接影响;J2EE服务器层,年夜多半服务器都能够对字符编码举行自界说的设置,比方Tomcat就能够经由过程web.xml中设置javaEncoding参数设置字符编码,默许是UTF-8.

IE也能够设置成老是利用UTF-8编码来发送哀求.使用程序层,每一个设置在服务器下的程序都能够设置本人的编码体例,这个我今朝还没有效到,今后再进修。

 运转时的转码,运转时代,使用程序极可能必要与内部体系举行交互,比方对数据库举行读写,对内部文件举行读写.在这些情形下,使用程序免不了要和内部体系举行数据互换。那末关于中笔墨符,数据收支口的编码体例就显得出格主要了。一样平常内部体系都有本人的字符编码体例,我的例子中设置的MySQL就是利用的UTF-8编码。JSP页面经由过程设定"charset=gb2312",

利用gb2312编码,在它与数据库交互的时分就必要举行显式的转码才干准确处置中笔墨符。

大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
老尸 该用户已被删除
沙发
发表于 2015-1-21 15:22:16 来自手机 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-22 05:52:52 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
第二个灵魂 该用户已被删除
地板
发表于 2015-1-22 22:53:19 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
再现理想 该用户已被删除
5#
发表于 2015-1-25 18:07:42 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
只想知道 该用户已被删除
6#
发表于 2015-2-3 12:33:08 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
飘灵儿 该用户已被删除
7#
发表于 2015-2-9 00:09:52 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
精灵巫婆 该用户已被删除
8#
发表于 2015-2-26 14:47:25 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
简单生活 该用户已被删除
9#
发表于 2015-3-8 15:35:47 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
活着的死人 该用户已被删除
10#
发表于 2015-3-16 03:29:14 | 只看该作者
是一种突破用户端机器环境和CPU
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-22 19:10:43 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
小魔女 该用户已被删除
12#
发表于 2015-4-3 00:34:10 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
山那边是海 该用户已被删除
13#
发表于 2015-4-14 07:18:26 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
若天明 该用户已被删除
14#
发表于 2015-4-15 10:52:55 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
爱飞 该用户已被删除
15#
发表于 2015-4-26 05:24:58 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
再见西城 该用户已被删除
16#
发表于 2015-5-4 15:26:06 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
若相依 该用户已被删除
17#
发表于 2015-5-6 19:11:50 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
小妖女 该用户已被删除
18#
发表于 2015-6-8 22:41:25 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
金色的骷髅 该用户已被删除
19#
发表于 2015-7-3 22:13:02 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
莫相离 该用户已被删除
20#
发表于 2015-7-9 22:28:29 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 21:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表