整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Java Jsp中文亂碼解決方法

          從接觸Java和JSP以來,就不斷與Java的中文亂碼問題打交道,現在終于得到了徹底的解決,現將我們的解決心得與大家共享。

          一、Java中文問題的由來

          Java的內核和class文件是基于unicode的,這使Java程序具有良好的跨平臺性,但也帶來了一些中文亂碼問題的麻煩。原因主要有兩方面,Java和JSP文件本身編譯時產生的亂碼問題和Java程序于其他媒介交互產生的亂碼問題。

          首先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程序與這些媒介交互時就會發生字符(char)與字節(byte)之間的轉換,例如從頁面提交表單中提交的數據在Java程序里顯示亂碼等情況。

          如果在以上轉換過程中使用的編碼方式與字節原有的編碼不一致,很可能就會出現亂碼。

          二、解決方法

          對于流行的Tomcat來說,有以下兩種解決方法:

          1) 更改 D:\Tomcat\conf\server.xml,指定瀏覽器的編碼格式為“簡體中文”:

          方法是找到 server.xml 中的

          <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

          enableLookups="false" redirectPort="8443" acceptCount="100"

          connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />

          西安尚學堂 http://www.xasxt.com/

          Java零基礎就業班

          上課地址:陜西省西安市高新區科技二路西安軟件園天澤大廈五樓

          咨詢電話:029-62258374 QQ 2145598324

          招生對象:

          1. 零計算機編程基礎學

          2. 對行業不滿意人士

          3. 跨專業編程愛好者

          4. 在校大學生實訓

          Java零基礎班,10年 Java 以上開發經驗技術講師、架構師、行業大牛,親自純面授課程,手把手教你寫編程。

          10月新班免費試聽課程已就緒,7天免費聽課,體驗Java樂趣。

          equests是一個較為簡單易用的HTTP請求庫,是python中編寫爬蟲程序最基礎常用的一個庫。對于初學者來說采集的數據【中文亂碼】問題是很煩惱的。

          本文將根據實踐經驗說明python中使用requests庫編寫爬蟲程序時,出現【中文亂碼】的原因及解決辦法。

          首先,本文的【中文亂碼】情況,指的是原網頁中的中文內容在使用requests獲取后,中文完全無法識別的情況,區別于\x、\u等編碼情況。如下圖中的例子:

          導致上圖中【中文亂碼】的原因:

          使用requests庫時,選擇使用的文本響應方法不合適,且沒有在代碼中添加設置合適的編碼,以致于使用【response.text】自動獲取到的網頁編碼,與實際網頁的編碼不一致,進而產生【中文亂碼】。

          使用requests庫時,可能已經形成了一個習慣,常用【response.text】進行文本響應,而【response.content】常用于圖片、視頻等。

          這兩者,最大的一個區別就是:

          1、【response.text】會自動根據HTTP頭部去推測網頁的編碼,解碼并返回解碼后的文本。

          2、【response.content】不會解碼,直接以二進制形式返回。

          兩種文本響應方法,如下表:

          response.text

          服務器響應的內容,會自動根據響應頭部的字符編碼進行解碼。根據HTTP頭部對響應的編碼做出有根據的推測,推測文本編碼。返回類型:str;常用于:響應文本

          response.content

          字節方式的響應體,不會根據HTTP頭部對響應的編碼做出有根據的推測。返回類型:bytes(二進制);常用于:圖片、視頻

          最有效的解決方法:

          獲取網頁編碼、指定其編碼,再提取文本

          使用response的encoding、apparent_encoding,得到網頁編碼。

          encoding、apparent_encoding兩者最大的區別:

          encoding是從header中去提取,而apparent_encoding是從網頁源碼去解析,apparent_encoding得到的結果更準確。

          詳細如下表:

          response.encoding

          從網頁響應的header中,提取charset字段中的編碼。若header中沒有charset字段,則默認為ISO-8859-1編碼模式,ISO-8859-1編碼無法解析中文,這也是中文亂碼的原因。

          response.apparent_encoding

          從網頁的內容中(html源碼)中分析網頁編碼的方式。所以apparent_encoding比encoding更加準確,獲取到的才是原網頁的實際編碼。

          print(response.apparent_encoding)
          print(response.encoding)

          使用encoding、apparent_encoding兩種方法,所得的結果是不一致的,apparent_encoding才是原網頁實際編碼。如下圖

          根據上述方法,獲得原網頁的實際編碼后,手動在代碼中指定文本編碼格式,即可解決【中文亂碼】問題。如下圖:

          response.encoding=response.apparent_encoding

          以上就是使用requests爬蟲解決中文亂碼的方法,如那位老師有更好的方法還望賜教,謝謝!


          TML 超文本標記語言(英語:HyperText Markup Language)是一種用于創建網頁的標準標記語言。

          【注】對于中文網頁需要使用 <meta charset="utf-8"> 聲明編碼,否則會出現亂碼。

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="utf-8">
          <title>頭條</title>
          </head>
          <body>
              <h1>標題1</h1>
              <p>段落1</p>
          </body>
          </html>
          //實例解析
          /**DOCTYPE 聲明了文檔類型
          位于標簽 <html> 與 </html> 描述了文檔類型
          位于標簽 <body> 與 </body> 為可視化網頁內容
          位于標簽 <h1> 與 </h1> 作為一個標題使用
          位于標簽 <p> 與 </p> 作為一個段落顯示 **/

          html在瀏覽器顯示內容區

          HTML 文本相關標簽

          • h1-h6 文本標題, 特點: 獨占一行, 自帶上下間距, 字體加粗
          • p 段落標簽, 特點: 獨占一行,自帶上下間距
          • hr 水平分割線
          • br 換行
          • b 加粗
          • i 斜體
          • u 下劃線
          • s 刪除線
          • sub 下標
          • sup 上標
          <!--特點: 字體加粗 獨占一行 自帶上下間距-->
          <h1 align="center">內容標題1</h1>
          <h2 align="right">內容標題2</h2>
          <h3>內容標題3</h3>
          <h4>內容標題4</h4>
          <h5>內容標題5</h5>
          <h6>內容<br>標題6</h6>
          <hr>
          <!--段落標簽p 特點: 獨占一行 自帶上下間距-->
          <p>段落1</p>
          <p>段落2</p><p>段落3</p>
          加粗<b>標簽</b>
          斜體<i>標簽</i>
          下劃線<u>標簽</u>
          刪除線<s>標簽</s>
          <sub> 下標</sub> 
          <sup> 上標</sup>

          HTML 列表標簽

          • 無序列表: ul和li 組合 unordered list list item 列表項
          • 有序列表: ol和li 組合 ordered list
          • 列表嵌套: 有序列表和無序列表可以任意無限嵌套 .
          <!--無序列表-->
          <ul>
              <li>貂蟬</li>
              <li>孫尚香</li>
              <li>孫悟空</li>
              <li>豬八戒</li>
              <li>劉禪</li>
          </ul>
          <!--無序、有序列表-->
          <ul>
              <li>涼菜
                  <ol>
                      <li>拍黃瓜</li>
                      <li>涼皮</li>
                  </ol>
              </li>
              <li>炒菜
                  <ol>
                      <li>宮保雞丁</li>
                      <li>辣椒小炒肉</li>
                  </ol>
              </li>
          </ul>

          HTML圖片標簽

          • src: 資源路徑

          1)相對路徑: 訪問站內資源

          圖片和頁面在同級目錄: 直接寫圖片名

          圖片在頁面的上級目錄: ../圖片名

          圖片在頁面的下級目錄: 文件夾名/圖片名

          2)絕對路徑: 訪問站外資源, 圖片盜鏈, 有找不到圖片的風險

          • alt: 圖片不能正常顯示時顯示的文本
          • title: 圖片標題
          • width/height: 設置寬高 , 只設置寬度時高度會自動等比例縮放

          ①像素

          ②上級元素百分比

          <!--alt: 當圖片不能正常顯示時 顯示的文本-->
          <!--title: 圖片標題-->
          <img src="aa.jpg" alt="這是個美女圖片">
          <img src="../b.jpg" title="這是標題" alt="">
          <!--width/height-->
          兩種賦值方式: 1. 像素  2. 上級元素的百分比
          只設置寬度時 高度會自動等比例縮放-->
          <img src="abc/c.jpg" width="50" alt="">
          <img src="abc/c.jpg" width="50%" alt="">
          <img src="https://www.baidu.com/e47f5058f84a655.png" alt="">

          HTML超鏈接a

          • href: 資源路徑, 作用類似圖片標簽的src
          • a標簽包裹文本為文本超鏈接, 包裹圖片為圖片超鏈接
          • 頁面內部跳轉, 在目的地的元素里面添加id=xxx 然后在超鏈接里面添加href="#xxx"
          <!--超鏈接-->
          <a id="top" href="http://www.baidu.com">超鏈接1</a>
          <a href="day01.html">超鏈接2</a>
          <a href="a.jpg">超鏈接3</a>
          <a href="http://www.celinf.cn"><img src="a.jpg" width="100"></a>
          <a href="#top">回到頂部</a>

          HTML表格table

          • 相關標簽: table tr表示行 td表示列 th表頭 caption標題
          • 相關屬性: border邊框 colspan跨列 rowspan跨行
          <!--表格一 -->
          <table border="1">
              <tr>
                  <td colspan="2">1-1</td><td rowspan="2">1-3</td>
              </tr>
              <tr>
                  <td rowspan="2">2-1</td><td>2-2</td>
              </tr>
              <tr>
                  <td colspan="2">3-2</td>
              </tr>
          </table>
          <!--表格二 -->
          <table border="1">
              <caption>購物車</caption>
              <tr>
                  <th>編號</th><th>商品名</th><th>價格</th>
              </tr>
              <tr>
                  <td>1</td><td>小米12 pro</td><td>5000</td>
              </tr>
              <tr>
                  <td>2</td><td>華為電視</td><td>4000</td>
              </tr>
              <tr>
                  <td>總價:</td><td colspan="2">9000元</td>
              </tr>
          </table>

          HTML表單form

          • 作用: 獲取用戶輸入的各種信息 并提交給服務器
          • 學習form表單主要學習的就是下面這些控件
          <form action="http://www.baidu.com" method="get">
              <!--maxlength最大字符長度  value設置默認值  readonly只讀-->
             用戶名:<input type="text" name="username" maxlength="5" value="abc" readonly ><br>
              密碼:<input type="password" name="password"><br>
              <!--value是單選框必須添加的屬性 否則提交on  checked默認選中-->
              性別:<input type="radio" name="gender" value="m" id="r1">
              <label for="r1">男</label>
              <input type="radio" name="gender" checked value="w">女<br>
               <!--多選框--> 
              興趣愛好:<input type="checkbox" name="hobby" value="cy">成員
              <input type="checkbox" name="hobby" checked value="hj">環境
              <input type="checkbox" name="hobby" value="tt">團體<br>
               <!--日期--> 
              生日:<input type="date" name="birthday"><br>
              <!--文件-->     
              文件:<input type="file" name="pic"><br>
              所在地:
              <!--value設置提交的內容    selected默認選中-->
              <select name="city">
                  <option value="bj">北京</option>
                  <option value="sh">上海</option>
                  <option value="gz" selected>廣州</option>
              </select><br>
              <input type="submit" value="注冊">
          </form>

          HTML分區標簽

          • 作用: 可以理解為是一個容器,將多個有相關性的標簽進行統一管理
          • 塊級分區標簽div: 特點是獨占一行
          • 行內分區標簽span: 特點是共占一行
          • 頁面區域如何劃分? 至少分為三大區(頭,體,腳) 每個大的區域再劃分n個小的區域
          • HTML5的標準中新增了一些語義更強的分區標簽,為了提高代碼的可讀性. 這幾個標簽的作用和div一樣都是塊級分區標簽
          1. header
          2. footer
          3. main主體
          4. section區域
          5. nav 導航

          CSS 層疊樣式表Cascading Style Sheet)

          作用: 美化頁面(好比裝修)

          如何在HTML頁面中添加CSS樣式代碼三種引入方式:

          • 內聯樣式: 在標簽的style屬性中添加樣式代碼, 弊端:不能復用
          • 內部樣式: 在head標簽里面添加一個style標簽, 在標簽體內寫樣式代碼, 可以實現復用但是只能在本頁面復用
          • 外部樣式: 在單獨的css樣式文件中寫樣式代碼, 在html頁面中通過link標簽引入, 可以實現多頁面復用, 可以將html代碼和css樣式代碼分離
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
          		<!--內部樣式-->
              <style>
                 h2{color: blue}
              </style>
              <!--引入外部的css樣式文件-->
              <link rel="stylesheet" href="my.css">
          </head>
          <body>
          <h1 style="color: red">內聯樣式1</h1>
          <h1 style="color: red">內聯樣式2</h1>
          <h2>內部樣式1</h2>
          <h2>內部樣式2</h2>
          <h3>外部樣式1</h3>
          <h3>外部樣式2</h3>

          選擇器

          1. 標簽名選擇器: 選取頁面中所有同名標簽 格式: 標簽名{樣式代碼}
          2. id選擇器: 當需要選擇頁面中某一個元素時使用 格式: #id{樣式代碼}
          3. 類選擇器: 當需要選擇多個不相關的元素時,給多個元素添加相同的class屬性,然后通過類選擇器進行選擇 格式: .class{樣式代碼}
          4. 分組選擇器: 分組選擇器可以將多個選擇器合并成一個 h4,#id,.class{樣式代碼}
          5. 屬性選擇器: 通過元素的屬性選擇元素 格式: 標簽名[屬性名="屬性值"]{樣式代碼}
          6. 任意元素選擇器: 選擇頁面中所有標簽 格式: *{樣式代碼}
          <head>   
          	<meta charset="UTF-8">
              <title>Title</title>
              <style>
                  /*id選擇器*/
                  #p1{color: red}
                  /*類選擇器*/
                  .c1{color: yellow}
                  /*分組選擇器*/
                  h4,#p1,.c1{background-color: blue}
                  /*屬性選擇器*/
                  input[type="text"]{color: red}
                  /*任意元素選擇器*/
                  /*邊框: 粗細 樣式 顏色*/
                  *{border: 1px solid purple}
              </style>
          </head>
          <body>
          <input type="text">
          <input type="password">
          <p id="p1">蘋果</p>
          <p class="c1">香蕉</p>
          <p>橘子</p>
          <h3>冰箱</h3>
          <h3 class="c1">洗衣機</h3>
          <h3>電視機</h3>
          <h4>張三</h4>

          Idea快捷鍵

          • Alt+Insert 生成代碼(如get,set方法,構造函數等) 或者右鍵(Generate)
          • fori/sout/psvm + Tab 【Tab快捷,下:】
          1. iter 快速生成 for…in 語句
          2. inst 快速生成”if instanceof ”語句
          3. itco 快速生成 iterator 的 for 循環
          4. itit 快速生成 iterator 的 while 循環
          5. itli 快速生成 list 的 for(i)循環
          6. psf 快速生成“public static final” 語句
          7. thr 快速生成“throw new” 語句
          • CTRL+ALT+T 把選中的代碼放在 TRY{} IF{} ELSE{} 里
          • ALT+/ 代碼提示
          • Ctrl+X 刪除行
          • Ctrl+D 復制行
          • Ctrl+/ 或 Ctrl+Shift+/ 注釋(// 或者/…/ )
          • Alt+F1 查找代碼所在位置
          • CTRL+Z 倒退(撤銷)
          • ALT+F1 查找文件所在目錄位置
          • Alt+Shift+F9,選擇 Debug
          • Alt+Shift+F10,選擇 Run
          • Alt+F9,運行至斷點處
          • Alt+F10,定位到斷點
          • Shift+F6,重命名
          • Alt+F12 打開命令終端
          • Shift+Shift 搜索文件

          學習記錄,如有侵權請聯系刪除。


          主站蜘蛛池模板: 无码人妻精品一区二区三区久久 | 国产精品香蕉一区二区三区| 精品一区二区三区在线播放视频| 冲田杏梨AV一区二区三区| 日本中文字幕在线视频一区| 末成年女AV片一区二区| 一区二区三区亚洲视频| 日美欧韩一区二去三区| 熟妇人妻AV无码一区二区三区| 国产精品区一区二区三| 中文字幕av一区| 中文字幕亚洲综合精品一区| 婷婷国产成人精品一区二| 国产SUV精品一区二区四| 久久久无码一区二区三区| 日韩一区二区电影| 国产在线无码一区二区三区视频| 精品一区二区三区无码免费直播 | 亲子乱AV视频一区二区| 激情啪啪精品一区二区| 国产一区二区在线观看麻豆| 国模精品视频一区二区三区| 2021国产精品视频一区| 国产手机精品一区二区| 亚洲av乱码一区二区三区香蕉| 国产精品va无码一区二区 | 国模精品一区二区三区视频| 无码人妻一区二区三区兔费| 亚洲综合色一区二区三区| 日韩一区二区在线观看视频| 日韩精品一区二区三区四区| 国产精品伦一区二区三级视频 | 色一情一乱一伦一区二区三区日本 | 国产精品一区二区av不卡| 亚洲第一区精品观看| 亚洲性日韩精品一区二区三区| 日韩电影在线观看第一区| 亚洲AV日韩精品一区二区三区| 精品一区中文字幕| 一区二区三区四区精品| 国产美女露脸口爆吞精一区二区|