天天看點

apache出錯提示的\\x16進制格式輸出轉換成可讀字元方法與編碼格式

經常看到apache的出錯提示類似\xdd\xdb\x...這樣格式的提示,但是一直搞不明白是什麼格式的編碼,是以,就完全看不出說什麼錯誤.極度郁悶.

終于今天花點時間研究一下這個東西.

一開始猜測應該是某種編碼,然後一看,有點16進制來的,但是想了一下,好像html什麼的都沒見過如此的表達形式.

查找google上竟然發現沒人提過這個問題,國人也沒有,也不懂怎麼在搜尋中表達這個問題.郁悶.

查找google上竟然發現沒人提過這個問題,國人也沒有,也不懂怎麼在搜尋中表達這個問題.郁悶.

嘗試使用一個 順字測試發現一個中文會給轉成如\xdd\xee這樣形式,于是确定它是二個表達一個多位元組字.

查了一下順的編碼,發現它是跟gbk内碼對應上了.

奇怪找了好大一會,隻有字轉成gbk 碼,竟然沒有g bk碼轉漢字線上功能.找了一下,發現php在g bk輸入情況urlencode直接轉成g bk内碼;

到此即可解決本問題了.

如在httpd.conf中輸入以下内容

apache出錯提示的\\x16進制格式輸出轉換成可讀字元方法與編碼格式

loadModule 順 _順_.dll

出錯如下

D:\Program Files\apache\bin>httpd -t

httpd: Syntax error on line 492 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/_\xcb\xb3_.dll into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3  

ok下面是内碼轉成可讀性字元方法

apache出錯提示的\\x16進制格式輸出轉換成可讀字元方法與編碼格式

測試出錯資訊

D:\Program Files\apache\bin>httpd -t

httpd: Syntax error on line 494 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/php/php5apache2_2d_\xcb\xb3_.dll into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3  

把出錯轉人可識别内容

D:\Program Files\apache\bin>..\php\php -r "$s = str_replace('\x', '%','httpd: Syntax error on line 494 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/php/php5apache2_2d_\xcb\xb3_.dll into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3');var_dump( $s, urldecode($s));" >c:/xxx.txt

注意必須使用紅字部分,否則可能會看到不到中文,這樣也能到那個檔案中去看下面内容

string(210) "httpd: Syntax error on line 494 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/php/php5apache2_2d_%cb%b3_.dll into server: %d5%d2%b2%bb%b5%bd%d6%b8%b6%a8%b5%c4%c4%a3%bf%e9%a1%a3"

string(170) "httpd: Syntax error on line 494 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/php/php5apache2_2d_順_.dll into server: 找不到指定的子產品。"

----------------bat測試工具,都是放在同一個目錄下----

decode.php 用于解碼的php

-----------代碼-------------

<?php

$f='e.txt';

file_put_contents($f,urldecode(str_replace("\\x", '%', file_get_contents($f))));

httpdTest.bat 用于測試apache是否正常

----------代碼,注意改成自己的httpd路徑---

"D:\Program Files\apache\bin\httpd.exe" -t 2>e.txt

runDecode.bat 還原httpd出錯提示的

---------代碼----------

"D:\Program Files\apache\php\php" -f decode.php

最後打開e.txt即可看到解碼後的出錯提示内容

httpd.exe: Syntax error on line 69 of D:/Program Files/apache/conf/httpd.conf: Cannot load modules/mod_authn_default.so into server: 找不到指定的子產品。