Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 免费国产黄网站在线观看,中文字幕不卡免费视频,亚洲系列国产精品制服丝袜第

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          關(guān)于亂碼問題的解決與HttpServletRespo

          關(guān)于亂碼問題的解決與HttpServletResponse中的方法

          明:本欄目所使用的素材都是凱哥學(xué)堂VIP學(xué)員所寫,學(xué)員有權(quán)匿名,對(duì)文章有最終解釋權(quán);凱哥學(xué)堂旨在促進(jìn)VIP學(xué)員互相學(xué)習(xí)的基礎(chǔ)上公開筆記。

          關(guān)于亂碼問題的解決

          會(huì)有亂碼現(xiàn)象,其實(shí)就是因?yàn)樽址幋a不一致的問題,就好像中國人和外國人談話一樣,互相不懂對(duì)方在說啥。字符集編碼也是如此,本來就是一段GBK編碼的文字,卻要用utf-8的編碼格式去解碼,就當(dāng)然是雞同鴨講會(huì)出現(xiàn)亂碼啦,這個(gè)時(shí)候就得使用GBK編碼的格式去解碼才不會(huì)出問題。如果互相都是使用的GBK編碼后,那就像中國人和中國人都說普通話一樣,就能聽懂對(duì)方在說什么,這樣才不會(huì)出現(xiàn)亂碼。

          在web開發(fā)中,請(qǐng)求或響應(yīng)數(shù)據(jù)時(shí)出現(xiàn)亂碼,往往就是客戶端和服務(wù)端的編碼不一致的問題所導(dǎo)致的。

          不過在介紹如何解決亂碼的問題前,我們先看看HttpServletRequest中關(guān)于獲得表單數(shù)據(jù)的一些方法,雖然在上一篇也介紹了使用方式,不過關(guān)于亂碼和拿到具體的值這方面沒有涉及到:

          獲得和設(shè)置表單數(shù)據(jù)方法(如果是上傳文件的話則無法獲取文件中的數(shù)據(jù)):

          既然和表單有關(guān),那么就得先寫一個(gè)簡(jiǎn)單的html表單代碼,我們可以在Eclipse中創(chuàng)建一個(gè)html文件:

          可能使用Eclipse編寫HTML的代碼不太方便,我們也可以使用一個(gè)專門編寫html代碼的工具來編寫Eclipse里已經(jīng)創(chuàng)建了的html文件,我這里使用HBuilder作為示例:

          1.復(fù)制Eclipse中的html文件所在目錄的路徑:

          2.在HBuilder中點(diǎn)擊文件,然后選擇打開目錄把復(fù)制的文件路徑粘貼進(jìn)去,并為這個(gè)工程起一個(gè)新的名稱:

          工程目錄如下:

          如圖,可以看到index.html已經(jīng)在這個(gè)工程下了,我們可以在HBuilder中編輯這個(gè)html文件,編輯的內(nèi)容會(huì)同步到Eclipse,因?yàn)樗鼈z訪問的都是同一個(gè)目錄同一個(gè)html文件。

          3.我在HBuilder編輯的代碼如下:

          4.再看看Eclipse發(fā)生了什么:

          可以看到代碼是同步的。

          瀏覽器運(yùn)行結(jié)果:

          以下使用實(shí)際代碼演示常用的幾個(gè)獲得表單數(shù)據(jù)的方法,代碼示例:

          在Eclipse中執(zhí)行html文件,Eclipse有一個(gè)內(nèi)置的瀏覽器:

          如果要在其他的瀏覽器則需要使用這個(gè)URL地址:

          http://localhost:8080/TestResponse/index.html

          不要直接在HBuilder中運(yùn)行這個(gè)html文件,因?yàn)樗腢RL是指向HBuilder的工程路徑的。

          控制臺(tái)打印結(jié)果:

          如圖,可以看到我們將所有的值都獲得到手了。

          獲得表單數(shù)據(jù)的時(shí)候要注意一個(gè)問題:當(dāng)你需要獲得一個(gè)屬性的值時(shí),如果得到的結(jié)果為null,那么就是因?yàn)楸韱螖?shù)據(jù)中并沒有這個(gè)屬性的存在。例如我獲得一個(gè)不存在的屬性:

          控制臺(tái)打印結(jié)果:

          可以看到結(jié)果為null,所以當(dāng)你獲得表單數(shù)據(jù)進(jìn)行某些操作時(shí),出現(xiàn)了空指針異常的話,很有可能就是因?yàn)榇a上寫錯(cuò)了獲得了一個(gè)不存在的屬性。

          如果表單數(shù)據(jù)中的某個(gè)屬性值沒有寫,那么獲得的將是一個(gè)空字符串,而非null,例如:

          控制臺(tái)打印結(jié)果:

          如圖,并沒有打印null,而是打印空白,這個(gè)空白就是一個(gè)空字符串:’’

          會(huì)出現(xiàn)亂碼的情況,以及解決方法:

          現(xiàn)在我們修改一下代碼把表單提交的方法改為post,再運(yùn)行一次,看看控制臺(tái)的打印結(jié)果,html代碼示例:

          Java代碼示例:

          提交的表單:

          控制臺(tái)的打印結(jié)果:

          可以看到控制臺(tái)中的打印結(jié)果出現(xiàn)了不能識(shí)別的字符,解決方法很簡(jiǎn)單,使用setCharacterEncoding(String)方法,設(shè)置表單提交的數(shù)據(jù)的編碼格式即可:

          運(yùn)行結(jié)果:

          注意:除了在Java代碼中需要設(shè)置編碼格式,在html文件中也要設(shè)置好編碼格式,如果html中不設(shè)置編碼格式的話,即便在Java代碼中使用了setCharacterEncoding(String)方法設(shè)置了也沒有用,所以這是雙向的,例如我把html文件中設(shè)置編碼格式的標(biāo)簽給刪掉:

          可以看到在網(wǎng)頁上顯示都是亂碼(這是因?yàn)镋clipse內(nèi)置的瀏覽器原因,一般市面上的瀏覽器提前預(yù)設(shè)了字符編碼,所以不會(huì)出現(xiàn)這種情況)

          控制臺(tái)打印結(jié)果:

          果然出現(xiàn)了不能識(shí)別的字符,所以html文件也是需要設(shè)置好編碼的,不然的話就會(huì)出現(xiàn)亂碼的情況。

          下面來看看瀏覽器的地址欄中為什么能夠顯示中文:

          這其實(shí)是因?yàn)闉g覽器轉(zhuǎn)碼了,可以把這個(gè)URL復(fù)制到記事本中:

          可以看到是一堆的編碼,并沒有顯示中文,所以實(shí)際上瀏覽器就是把這個(gè)編碼給轉(zhuǎn)換成了中文而已。

          只要不屬于128個(gè)字符內(nèi)的字符,在地址欄中都會(huì)轉(zhuǎn)換成這種格式的編碼,這些編碼格式是采用的16進(jìn)制的編碼格式,以上面這文本示例編碼對(duì)應(yīng)的中文:

          如圖,每一個(gè)16進(jìn)制編碼都是以%開頭,這是utf-8編碼的中文,所以一個(gè)中文字對(duì)應(yīng)3個(gè)16進(jìn)制編碼。

          如果是GBK編碼格式的中文則是一個(gè)中文字對(duì)應(yīng)2個(gè)16進(jìn)制編碼,但是GBK編碼格式轉(zhuǎn)換成的16進(jìn)制編碼不能被瀏覽器轉(zhuǎn)換,會(huì)仍然顯示著16進(jìn)制編碼:

          中文字對(duì)應(yīng)的16進(jìn)制編碼:

          如圖,GBK編碼格式的中文字和utf-8編碼的中文字不一樣,是2個(gè)16進(jìn)制編碼對(duì)應(yīng)一個(gè)中文字。

          關(guān)于客戶端請(qǐng)求數(shù)據(jù)方面的亂碼情況就介紹這么多,另外響應(yīng)數(shù)據(jù)中出現(xiàn)亂碼的情況和解決方法在介紹HttpServletResponse方法部分進(jìn)行說明。

          思維導(dǎo)圖:

          HttpServletResponse中的方法

          HttpServletResponse接口類型的對(duì)象是封裝服務(wù)端響應(yīng)數(shù)據(jù)的,所以這個(gè)對(duì)象中的方法都是與響應(yīng)數(shù)據(jù)相關(guān)。以下羅列一些常用的方法:

          下面使用實(shí)際的例子,演示以上方法的使用方式:

          編輯響應(yīng)頭一類的方法:

          代碼示例:

          在服務(wù)端設(shè)置響應(yīng)數(shù)據(jù)的編碼格式是很有必要的,這么做同樣的也是為了避免出現(xiàn)亂碼的問題。例如以下這個(gè)示例,我不設(shè)置響應(yīng)數(shù)據(jù)的編碼格式,并輸出一段中文,看看會(huì)發(fā)生什么,代碼示例:

          運(yùn)行結(jié)果:

          如圖,可以看到,沒有設(shè)置響應(yīng)數(shù)據(jù)的編碼格式的話,輸出中文就會(huì)無法被識(shí)別。

          這種問題設(shè)置一下響應(yīng)數(shù)據(jù)的編碼格式就好了,但是服務(wù)端設(shè)置的編碼格式,要與瀏覽器端的編碼格式對(duì)應(yīng)上,如果不對(duì)應(yīng)的話仍然會(huì)是亂碼,代碼示例:

          運(yùn)行結(jié)果:

          添加新的響應(yīng)頭數(shù)據(jù):

          代碼示例:

          打開TCP/IP Monitor窗口,可以看到以上代碼添加進(jìn)響應(yīng)頭的數(shù)據(jù):

          獲得設(shè)置的響應(yīng)頭信息:

          代碼示例:

          控制臺(tái)打印結(jié)果:

          修改響應(yīng)頭信息:

          代碼示例:

          TCP/IP Monitor窗口:

          總結(jié):

          解決客戶端表單提交數(shù)據(jù)亂碼的問題,需要使用setCharacterEncoding(String)方法,設(shè)置好與客戶端對(duì)應(yīng)的編碼格式。

          解決服務(wù)端響應(yīng)數(shù)據(jù)亂碼的問題,則使用setCharacterEncoding(String)方法,設(shè)置好對(duì)應(yīng)的編碼格式。

          HttpServletRequest是封裝請(qǐng)求數(shù)據(jù)的對(duì)象,所以它的方法都是與客戶端請(qǐng)求信息相關(guān)的。

          HttpServletResponse是封裝響應(yīng)數(shù)據(jù)的對(duì)象,所以它的方法都是與服務(wù)端響應(yīng)信息相關(guān)的。

          abbix6安裝完成后,其web界面默認(rèn)是英文界面,點(diǎn)擊“User Settings”->“Profile”->“User”,將Language選擇為中文,點(diǎn)擊“Update”修改為中文,如下圖:

          先修改web界面為中文

          點(diǎn)擊“監(jiān)測(cè)”->“最新數(shù)據(jù)”,在“主機(jī)”和“名稱”里面輸入想要的數(shù)據(jù),點(diǎn)擊“應(yīng)用”即可顯示相應(yīng)指標(biāo)的最新數(shù)據(jù),如下圖:

          顯示最新數(shù)據(jù)

          在最新數(shù)據(jù)頁面,點(diǎn)擊“圖形”查看曲線圖,最下面顯示亂碼,如下圖:

          顯示中文亂碼

          原因:

          由于zabbix6默認(rèn)沒有中文字體,因此會(huì)顯示亂碼。

          解決過程:

          1.在web主機(jī)上查找字體相關(guān)的php文件,如下圖:

          查看字體相關(guān)的php文件路徑

          1. 在php文件中查找字體名稱及字體的文件路徑,如下圖:

          # more /zabbix/nginx-1.20.1/html/zabbix/include/defines.inc.php

          查看字體名稱和文件路徑

          1. 上傳新字體到web主機(jī)對(duì)應(yīng)目錄,并改名

          在一臺(tái)windows主機(jī)下找到simhei.ttf字體,方法為:控制面板-字體-復(fù)制(楷體-常規(guī))

          # cd /zabbix/nginx-1.20.1/html/zabbix/assets/fonts

          # cp DejaVuSans.ttf DejaVuSans.ttf.bak

          # mv simhei.ttf DejaVuSans.ttf

          1. 刷新web界面,正常顯示了:

          中文顯示正常

          vue項(xiàng)目使用npm run build命令打包時(shí),編譯不成功,提示css文件“ModuleParseError: Module parse failed: Unexpected character ' '”,這是因?yàn)閣ebpack配置文件缺少對(duì)字體等文件的處理。

          對(duì)webpack配置文件增加匹配規(guī)則:

          {
                  test: /\.(png|jpg|gif|svg|cur)$/,
                  loader: 'file-loader',
                  options: {
                    name: '[name].[ext]?[hash]'
                  }
          }

          webpack.base.conf.js


          主站蜘蛛池模板: 亚洲一区二区三区免费在线观看| 午夜视频久久久久一区 | 亚洲一区二区三区播放在线| 国产成人一区二区动漫精品| 精品无码av一区二区三区| 丰满人妻一区二区三区视频| 日本精品视频一区二区| 亚洲欧洲专线一区| 国产电影一区二区| 麻豆一区二区99久久久久| 高清一区二区三区日本久| 国产成人综合精品一区| 亚洲日韩国产一区二区三区 | 日本成人一区二区| 中文国产成人精品久久一区| 亚洲高清成人一区二区三区| 国产无吗一区二区三区在线欢| 亚洲AV成人精品日韩一区| 中文字幕一区二区三区人妻少妇| 精品人妻AV一区二区三区| 中文字幕日韩一区| 亚洲va乱码一区二区三区| 2021国产精品视频一区| AV鲁丝一区鲁丝二区鲁丝三区| 人体内射精一区二区三区| 日本伊人精品一区二区三区| 久久综合亚洲色一区二区三区 | 国产一区内射最近更新| 精品国产一区二区二三区在线观看| 一区二区三区在线观看中文字幕| 亚洲av高清在线观看一区二区| 福利一区国产原创多挂探花| 538国产精品一区二区在线| 综合久久一区二区三区| 天堂国产一区二区三区| 精品一区二区三区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 一区二区三区在线|欧| 91精品一区二区三区久久久久| 日本免费一区二区在线观看| 精品国产日韩亚洲一区在线|