当前位置:首页 » 网页前端 » javaweb编码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

javaweb编码

发布时间: 2022-09-20 02:43:10

❶ java web中关于编码的问题

pageEncoding 设置成gbk,这个属性是告诉jvm编译jsp文件时候以什么编码格式进行编译。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="gbk"%>

❷ java 做web项目什么时候用gbk什么时候用utf-8

UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。

GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。

对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK

❸ java web 编码,中文显示不了。 试过utf-8了,显示的是问号。

Java中UTF-8转GBK之所以不会出现中文乱码,是因为UTF-8编码为兼容性最大的字符集编码,它本身就支持中文字符。

Java代码转码范例:
String s = new String(ss.getBytes(),"GBK");
当你的内容本来就是正常的中文字符时,通过上面的语句转为GBK编码是不会有任何问题的,但如果你在转码之前的字符不是正确的中文字符,或者不是支持中文字符的字符集,那可能就会出现乱码问题。

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

在Java开发中,特别是web开发,乱码是一种很常见而且很头疼的问题,这常常是由于页面端、服务端、数据库等几处所使用的字符不一致所致,故开发中,保持编码一致, 往往能减少由于乱码而带来的时间浪费,是一件非常重要的事情。

❹ java web开发,页面处理Base64编码

以使用Oracle数据库举例,有两种实现方式.
一种是使用Clob类型字段,存放Base64编码之后的图片,WEB应用程序在获取到该字段(String对象)之后,使用Base64进行反编码,然后输出.
还有一种是使用Blob二进制大对象字段,直接存储对象的字节流.可以是任意的对象,例如图片,视频,文件等,然后WEB应用程序通过获取Blob对象重新构造字节流成为原本的对象.
但是无论使用哪一种方式,在真是业务开发中非必要的情况下是绝对不推荐的,因为数据越大,存取数据库所发生的性能消耗就越高,应用程序的效率就会比较低下.在后续的系统移至也无法通过SQL脚本进行,只能通过Oracle DMP的方式进行.因为无论是long,Clob还是Blob,都是无法通过简单的SQL进行插入的,推荐的做法是在数据库VARCHAR2字段存放该文件(图片,视频,文件等)的WEB容器相对路径,WEB应用程序仅仅通过该路径对需要访问的对象进行链接.

❺ java web 中编码流程是怎样的!request.setCharacterEncoding()和 response.setCharacterEncoding()怎么用

request.setCharacterEncoding()是从页面得到数据,数据在往servlet中送的时候字符的编码格式, response.setCharacterEncoding()是servlet给页面送数据,也就是响应给页面的字符编码格式。这两个都要与页面的字符编码一致。
如果要解决中文乱码呢?最好用过滤器做。还有一个呢,就是我经常用的,把所有的编码格式都设成GBK,这样出现乱码的概率小点,这是我的一点小小的经验,你可以试试

❻ 如何解决JavaWeb乱码问题

request-line中的URL部分必须以application/x-www-form-urlencoded方式编码。编码时使用的字符集是当前网页在浏览器上显示时所使用的字符集。

JDK中专门有两个类处理application/x-www-form-urlencoded类型的数据,它们是URLEncoder及URLDecoder。当网页上的数据需要手动进行URLEncoding处理时,可使用URLEncoder类完成编码工作。需要手动进行URLEncoding处理的位置包括:

  • 链接(<a></a>)中的href标签属性;

  • 以POST方式提交的表单(<form></form>)中的action标签属性。

  • 例如,网页上不应该产生这样的链接:

    [xhtml]view plain

  • <!--不正确的写法-->

  • <ahref="/hello/checkUser.html?opt=中文>使用者身份验证"</a>

  • 正确的写法是:

    [xhtml]view plain

  • <!--使用UTF-8字符集进行URLEncoding的结果-->

  • <ahref="/hello/checkUser.html?opt=%E4%B8%AD%E6%96%87">使用者身份验证</a>

  • 为此,方案之一可以在JSP网页上使用脚本化语言进行URLEncoding处理。如:

    [xhtml]view plain

  • <%@pageimport="java.net.URLEncoder"%>

  • <ahref="/hello/checkUser.html?opt=<%=URLEncoder.encode("中文","UTF-8")%>">使用者身份验证</a>

  • request-body的编码处理

    request-body只有在POST提交的方式下才会产生。request-body的编码方式由表单的enctype标签属性指定,同request-line一样,编码request-body时使用的字符集也是当前网页在浏览器上显示时所使用的字符集。request-body的编码过程由客户端浏览器自动完成,不需要额外的编程处理。

    服务器的处理

    相对于用户端,服务器端在接收到HTTP请求时提供了两种处理请求数据的方式:自动处理与不处理。
    服务器一般会自动处理application/x-www-form-urlencoded类型的数据(包括request-line及request-body中的数据),就servlet(Servlet类或JSP网页)而言,可以通过request对象的getParameter()或getParameterValues()取得这些数据。对于除此以外的其它MIME类型的数据,HTTP服务器则是将处理的过程直接交到了与HTTP请求相对应的servlet(Servlet类或JSP网页)身上。
    例如用户端有以下表单被提交:

    [xhtml]view plain

  • <formaction="checkUser.html?opt=xxx"method="POST">

  • <inputtype="text"name="username"value="yyy"/>

  • <inputtype="text"name="username"value="zzz"/>

  • <inupttype="submit"value="submit"/>

  • </form>

  • 表单提交时经服务器端自动处理后与checkUser.html相对应的servlet(Servlet类或JSP网页)可以通过下面的方式取得数据:

    [java]view plain

  • Stringopt=request.getParameter("opt");

  • String[]users=request.getParameterValues("username");

  • 默认情况下,服务器对于接收到的application/x-www-form-urlencoded类型数据进行字符集为ISO-8859-1的URLDecoding处理,经过处理之后的字符串内码为ISO-8859-1。对于没有附加任何设置的HTTP服务器而言,我们的servlet在取得数据之后必须进行相应的解码处理,生成内码为UTF-16(unicode)的字符串。
    例如对于用户端请求数据中以UTF-8字符集进行URLEncoding的数据,servlet需要进行如下方式的解码:

    [java]view plain

  • Stringopt=request.getParameter("opt");

  • if(opt!=null&&!"".equals(opt)){

  • opt=newString(opt.getBytes("ISO-8859-1"),"UTF-8");

  • }

  • 为了避免这种额外的编码/解码处理,也就是说让服务器了解到用户端在URLEncoding时所使用的字符集,从而直接进行相应字符集的URLDecoding处理,不同的HTTP服务器提供了不同的解决方案。
    以Tomcat为例,Tomcat自动解码request-line的处理方式由Tomcat的配置文件server.xml指定。在server.xml中的Connector标签中提供了URIEncoding标签属性,只要为其指定解码用的字符集,Tomcat就会自动解码request-line中经过application/x-www-form-urlencoded编码处理的数据。例如:

    <Connector connectionTimeout="40000" port="8080" protocol="HTTP/1.1"
    URIEncoding="UTF-8" redirectPort="8443"/>

    Tomcat自动解码request-body的处理方式是设置request的characterEncoding值。如:

    request.setCharacterEncoding("UTF-8");

    但是这一操作必须提前在filter中完成,在servlet中使用此方法已经不起作用了。filter的例子如下:

    [java]view plain

  • importjava.io.IOException;

  • importjavax.servlet.Filter;

  • importjavax.servlet.FilterChain;

  • importjavax.servlet.FilterConfig;

  • importjavax.servlet.ServletException;

  • importjavax.servlet.ServletRequest;

  • importjavax.servlet.ServletResponse;

  • {

  • privateStringencoding;

  • publicCharacterEncodingFilter(){

  • encoding=null;

  • }

  • publicvoiddestroy(){

  • encoding=null;

  • }

  • publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,

  • FilterChainchain)throwsIOException,ServletException{

  • request.setCharacterEncoding(encoding);

  • chain.doFilter(request,response);

  • }

  • publicvoidinit(FilterConfigfilterConfig)throwsServletException{

  • encoding=filterConfig.getInitParameter("encoding");

  • if(encoding==null||"".equals(encoding)){

  • encoding="UTF-8";

  • }

  • }

  • }

  • 我们可以在web.xml使用这个filter。web.xml的相应配置如下:

    [xhtml]view plain

  • <filter>

  • <filter-name>CharacterEncodingFilter</filter-name>

  • <filter-class>

  • CharacterEncodingFilter

  • </filter-class>

  • <init-param>

  • <param-name>encoding</param-name>

  • <param-value>UTF-8</param-value>

  • </init-param>

  • </filter>

  • <filter-mapping>

  • <filter-name>CharacterEncodingFilter</filter-name>

  • <url-pattern>/*</url-pattern>

  • </filter-mapping>

  • 通过上述两种方式的预处理,在servlet中取出的数据可以不必进行ISO-8859-1解码而直接使用。

    字符集的选择

    在处理application/x-www-form-urlencoded类型的数据过程中,需要注意的另一个问题是字符集的选择问题。如上所述,不论是request-line还是request-body,其URLEncoding所使用的字符集都是当前网页在浏览器上显示时所使用的字符集。而这个信息又是HTTP服务器端生成HTML网页时,在HTTP响应中提供的。
    当HTTP服务器接收到一个HTTP请求时,服务器总是需要向用户端发送一个HTTP响应。HTTP响应数据与HTTP请求数据格式相同,同样由以下几个部分组成:

    <response-line>
    <headers>
    <CRLF>
    [<response-body><CRLF>]

    下面描述的是请求一个HTML网页数据时服务器的响应信息:

    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: text/html;charset=UTF-8
    Content-Length: 265
    Date: Thu, 17 Dec 2009 05:20:36 GMT

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>test</title>
    </head>
    <body>
    <h1>Hello World</h1>
    </body>
    </html>
    [End]

    其中headers的Content-Type指定了数据流的数据格式以及显示用的字符集。这一指标可以通过以下几种方式指定:
    1. HTML网页
    在HTML网页的<head></head>中存在多个<meta/>标签,其中可以设置Content-Type。例如:

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    2. JSP网页
    JSP网页中,除了<meta/>标签之外,还需要在JSP网页头部设置如下代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    3. Servlet类
    如果要在Servlet类中通过response向用户端传送HTML数据,需要在传送前指定Content-Type。代码如下:

    response.setContentType("text/html;charset=UTF-8");

    通过上述三种方式,可以确保响应数据传送到用户端浏览器时,浏览器使用正确解码方式和字符集显示其内容。

    结束语

    总之,Content-Type是联系用户端与服务器端的纽带,通过这一指标,双方得以对相关的数据进行正确的编码与解码。只要了解了Content-Type的作用以及使用方法,乱码问题就会迎刃而解。

❼ java web程序与数据库字符编码问题

那就把jsp和servlet编码设置为utf-8,一劳永逸
-------------------
楼上的,这样试试
char c = '4';
int i = Character.getNumericValue(c);