當前位置:首頁 » 網頁前端 » 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);