`
carus
  • 浏览: 30907 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【tomcat+nutch+jdk】“中文乱码”的原理和解决方法

阅读更多

【tomcat 乱码的解决】

在 Nutch 的搜索框中输入中文,点击“搜索”按钮之后,可以看到搜索框中的关键字是乱码,搜索结果也为空。网上有很多文章都谈到了这个现象,这不是 Nutch 的问题,而是 Tomcat 没有对 uri 做编码造成的。

【Java中文问题的由来】

  Java 的内核和 class 文件是基于 unicode 的,这使 Java 程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。

原因主要有两方面:

------------------------------------------------------------------------------------------------------------------------------------

①Java 和 JSP文件本身编译时产生的乱码问题;

   首先 Java(包括 JSP)源文件中很可能包含有中文,而 Java 和 JSP 源文件的保存方式是基于字节流的,如果 Java 和 JSP 编译成 class 文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在 Java 文件中尽量不要写中文(注释部分不参与编译,写中文没关系), 如果必须写的话,尽量手动带参数 -ecoding GBK 或 -ecoding gb2312 编译;对于 JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。

------------------------------------------------------------------------------------------------------------------------------------

②Java程序于其他媒介交互产生的乱码问题。

  本文要重点讨论的是第二类乱码,即 Java 程序与其他存储媒介交互时产生的乱码。

  很多存储媒介,如数据库,文件,流等的存储方式都是基于字节流的,Java 程序与这些媒介交互时就会发生字符(char)与字节(byte)之间的转换,例如从页面提交表单中提交的数据在 Java 程序里显示乱码等情况。

  如果在以上转换过程中使用的编码方式与字节原有的编码不一致,很可能就会出现乱码。

===================================================================================

【解决方法】

  对于流行的 Tomcat 来说,有以下两种解决方法:

  1) 更改 /tomcat/conf/server.xml,指定浏览器的编码格式为“简体中文”:

vi /qu6zhi/tomcat/conf/server.xml

在“Connector port=”8080″”那一节添加

<Connector URIEncoding="UTF-8" useBodyEncodingForURI="true" />

在文件的最下面添加 URIEncoding="UTF-8" useBodyEncodingForURI="true" 即可。否则搜索栏输入的字符默认编码将不能正确解析。

  可以这样验证你的更改是否成功:在更改前,在你出现乱码的页面的浏览器,点击菜单“查看|编码”,会发现“西欧(ISO)”处于选中状态。而更改后,点击菜单“查看|编码”,会发现“简体中文(GB2312)”处于选中状态。

------------------------------------------------------------------------------------------------------------------------------------

  2)更改 Java 程序,我的程序是这样的:

public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      response.setContentType("text/html; charset=GBK");
      ...

}

  粗体字是必需要有的,它的作用是让浏览器把Unicode字符转换为GBK字符。这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了。

===================================================================================

【nutch 配置文件乱码的解决】


缓存乱码的解决:修改 search.jsp 中的代码行。
增加格式化搜索字符的函数,同时对 queryString 进行处理。

vi /qu6zhi/tomcat/webapps/search/search.jsp


String queryString = request.getParameter("query") 
改成
String queryString = new String(request.getParameter("query").getBytes("ISO-8859-1"),"UTF-8");

注意:经过以上处理,部分 UTF-8 的页面依然会出现乱码。要想彻底解决,需要将 Content 内容先做判断,如果 Meta 标签中有 charset="utf-8"标志,则

Content =new String(bean.getContent(details),"utf-8");

经过以上处理,基本上不会有乱码的缓存页面存在。



参考:
http://www.williamlong.info/archives/469.html
http://jerry.bloghome.cn/posts/25151.html
http://blog.csdn.net/boybluesky/archive/2009/02/04/3861548.aspx
http://www.myispace.cn/clips/014a970d45714f259733570546ad2261.htm
分享到:
评论

相关推荐

    实验报告(利用Nutch和IKanalyzer构造中文分词搜索引擎)

    同时,针对中文乱码问题,分别在server.xml和cached.jsp中调整编码设置,确保中文能正确显示。 接下来,注意到Nutch的默认分词器是以单字为基础,且未处理停用词。通过Luke工具查看索引文件,确认了这一现象。为了...

    Linux下Nutch单机配置

    ### Linux下Nutch单机配置...总之,在Linux环境下配置Nutch涉及到多个步骤,包括环境搭建、JDK和Apache Tomcat的安装与配置,以及Nutch本身的配置和应用。通过以上详细的步骤,可以顺利完成Nutch在Linux下的单机配置。

    Nutch使用入门

    1. **中文乱码** - 如果搜索结果显示中文乱码,可能需要修改Tomcat的配置文件 `server.xml`,添加 `URIEncoding` 和 `useBodyEncodingForURI` 属性,设置为 `UTF-8`。 2. **网页快照乱码** - 对于网页快照的乱码问题...

    Nutch全文搜索学习笔记

    为了处理中文乱码问题,需要在Tomcat的`server.xml`文件中配置`URIEncoding`属性: ```xml ``` #### 二、Nutch核心组件介绍 **1. Fetcher(网页抓取器)** Fetcher负责根据URL列表抓取网页内容,并更新抓取状态...

    【多智能体控制】基于matlab事件触发多智能体编队控制(含间歇控制)【含Matlab源码 13223期】.zip

    Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    《网页制作基础教程(Dreamweaver-CS3)》第11章-嵌入表单元素.ppt

    《网页制作基础教程(Dreamweaver-CS3)》第11章-嵌入表单元素.ppt

    V1_3_example.ipynb

    V1_3_example.ipynb

    《计算机应用基础项目教程》项目四-电子表格软件Excel2010的使用.pptx

    《计算机应用基础项目教程》项目四-电子表格软件Excel2010的使用.pptx

    《计算机系统结构》第4章-指令级并行.ppt

    《计算机系统结构》第4章-指令级并行.ppt

    西门子1200博途三部十层电梯控制系统及WinCC RT Pro界面设计详解

    内容概要:本文详细介绍了基于西门子S7-1200 PLC和WinCC RT Pro的三部十层电梯联控系统的设计与实现。主要内容涵盖硬件配置、核心算法如电梯间协同算法、方向判断函数、状态机设计、呼叫调度算法以及WinCC画面设计中的动画效果和平滑移动实现方法。文中还讨论了常见的调试问题及其解决方案,如方向锁死、编码器干扰等。此外,强调了状态机在电梯控制中的重要性,并提供了具体的代码示例来解释各个功能模块的工作原理。 适合人群:自动化工程师、PLC程序员、HMI开发者、工业控制系统设计师。 使用场景及目标:适用于希望深入了解电梯控制系统设计原理和技术实现的专业人士。目标是帮助读者掌握电梯联控系统的编程技巧,提高对工业控制项目的理解和应用能力。 其他说明:文章不仅提供详细的代码片段,还分享了许多实践经验,有助于读者更好地理解和应对实际工程项目中的挑战。

    飞猫智联u20一键打开adb并安装

    飞猫智联u20一键打开adb并安装

    DeepSeek:智能时代的全面到来和人机协作的新常态.pdf

    DeepSeek:智能时代的全面到来和人机协作的新常态.pdf

    电机控制领域PMSM无传感HFI高频谐波注入与滑模观测器仿真模型解析(基于28035)

    内容概要:本文深入探讨了永磁同步电机(PMSM)无传感器控制技术中的高频谐波注入(HFI)方案及其滑模观测器仿真模型。主要介绍了HFI的工作原理,即通过向电机定子绕组注入高频信号并检测其响应来估算转子位置和速度。文中提供了详细的代码实现,包括高频信号生成、电流检测与处理、滑模观测器核心算法等。此外,还分享了实际工程项目中的调试经验和常见问题解决方案,如参数选择、硬件配置、滤波处理等。 适合人群:从事电机控制系统开发的技术人员,尤其是对PMSM无传感器控制感兴趣的工程师。 使用场景及目标:适用于需要提高PMSM电机控制性能的应用场合,如工业自动化设备、伺服系统等。目标是在低速条件下实现精确的转子位置和速度估算,从而提升系统的整体性能。 其他说明:文章不仅提供了理论和技术细节,还结合了大量实践经验,帮助读者更好地理解和应用HFI技术。同时强调了实际工程中需要注意的各种细节,如参数整定、硬件配置、滤波处理等,确保方案的可靠性和稳定性。

    OAI-10th-Anniversary-Workshop

    5G 6G NR-NTN A Hardware perspective && OAI-10th-Anniversary-Workshop-Qualcomm-2.pdf An SMEs Journey Towards 5G6G NTN Disruptive Technologies Lasting Software--OAI-10th-Anniversary-Workshop-Lasting-Software.pdf Deploying Private 5G with the Open Air Interface- OAI-10th-Anniversary-Workshop-Firecell-.pdf End-to-End Open-Source 5G and O-RAN Prototyping in ARA for Low-Latency Agriculture Applications OAI-10th-Anniversary-Workshop-Iowa-State-University.pdf OAI 5G NR NTN – PHY and MAC Layer Contributions 20240913_Fraunhofer_IIS_OAI_NTN_reduced.pdf Open Source in Telecoms Driving 5G innovatio--OAI-10th-Anniversary-Workshop-Canonical.pdf OpenAirInterface Recent Developments & Roadmap OAI-10th-Anniversary-Workshop-Florian-Kaltenberger.pdf The road of artificial intelligence towards the 6G

    三菱FX2N PLC编码器脉冲数测量距离的技术解析及应用

    内容概要:本文详细介绍了如何使用三菱FX2N系列PLC通过编码器脉冲数计算输出距离的方法。首先,文章阐述了核心思路,即通过采集编码器产生的脉冲数,结合预先设定的脉冲数和输出长度参数,经过一系列浮点数运算得出输出距离。文中展示了详细的代码实现步骤,包括初始化部分、脉冲采集部分、浮点数运算部分和结果处理部分。此外,还讨论了一些常见的调试技巧和注意事项,如数据溢出处理、双编码器校验、方向信号处理等。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是对PLC编程有一定基础的人群。 使用场景及目标:适用于需要精确测量距离的工业控制系统,如输送带系统、机械臂定位等。主要目标是帮助工程师掌握如何利用PLC和编码器实现高精度的距离测量。 其他说明:文章提供了丰富的代码示例和调试建议,有助于读者在实际项目中灵活运用相关技术和解决常见问题。同时强调了浮点运算在提高测量精度方面的优势及其潜在挑战。

    无刷直流电机BLDC转速电流双闭环调速系统的Matlab Simulink仿真研究

    内容概要:本文详细介绍了如何使用Matlab Simulink搭建无刷直流电机(BLDC)的转速电流双闭环调速系统。首先阐述了系统的基本架构,即外层转速环和内层电流环的作用及其相互关系。接着逐步讲解了各个模块的具体实现方法,包括电机模型参数设置、PI控制器参数配置、PWM信号生成、坐标变换等关键技术。通过仿真结果分析,展示了转速和电流响应曲线,探讨了参数调整对系统性能的影响。最终实现了对电机转速的精确控制,并提供了优化建议。 适合人群:从事电机控制领域的工程师和技术人员,尤其是有一定Matlab/Simulink基础的研究人员。 使用场景及目标:适用于希望深入了解BLDC电机控制原理及仿真的技术人员。目标是在理论基础上通过仿真工具掌握双闭环调速系统的构建与优化方法。 其他说明:文中不仅提供了详细的建模步骤,还分享了许多实用的经验技巧,如PI参数选择、PWM生成方式的选择、死区时间设置等,有助于提高实际应用中的系统性能。

    网课搜题 小猿题库多接口微信小程序源码 自带流量主.zip

    多接口小猿题库等综合网课搜题微信小程序源码带流量主,网课搜题小程序, 可以开通流量主赚钱 搭建教程 1, 微信公众平台注册自己的小程序 2, 下载微信开发者工具和小程序的源码 3, 上传代码到自己的小程序

    weixin287火锅店点餐系统的设计与实现+ssm(文档+源码)_kaic

    weixin287火锅店点餐系统的设计与实现+ssm(文档+源码)_kaic

    DotCom Secrets:在线增长策略揭秘

    《DotCom Secrets》是拉斯洛·布劳恩所著的一本关于如何使用在线营销策略来增长公司业务的书籍。本书揭示了在线营销巫师兄弟会不愿公开的秘密,强调了直接响应营销的重要性,并提供了构建和优化营销漏斗的系统方法。书中不仅介绍了如何通过各种在线渠道获取流量、提高转化率和销售,还提供了如何发现目标客户、构建价值阶梯以及如何利用“肥皂剧序列”等策略。拉斯洛·布劳恩通过本书,旨在帮助企业家在充满变数的互联网世界中找到坚实的营销基础。

    基于单片机的智能秤设计(程序+电路+仿真)(51+1602+HX711+10KG+BZ+KEY16)#0415

    包括:源程序工程文件、Proteus仿真工程文件、电路原理图文件、配套技术手册、论文资料等 1、采用51/52单片机(通用)作为主控芯片; 2、采用压力传感器+HX711模块检测压力; 3、可通过按键设置物品单价; 4、采用LCD1602对重量/单价/总价进行显示; 5、当物品超出传感器量程时,蜂鸣器进行过载报警。

Global site tag (gtag.js) - Google Analytics