整合營銷服務(wù)商

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

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

          PHP使用CURL詳解

          PHP使用CURL詳解

          url是PHP的一個擴(kuò)展,利用該擴(kuò)展可以實現(xiàn)服務(wù)器之間的數(shù)據(jù)或文件傳輸。也就是說curl就是一個工具,用來做服務(wù)器之間數(shù)據(jù)、文件傳輸?shù)墓ぞ摺?/p>

          用來采集網(wǎng)絡(luò)中的html網(wǎng)頁文件、其他服務(wù)器提供接口數(shù)據(jù)等


          開啟curl擴(kuò)展

          (1) 在php.ini里面開啟curl這個擴(kuò)展

          (2) 將PHP的安裝路徑保存到環(huán)境變量的系統(tǒng)變量中(環(huán)境變量之間的分隔符是英文的分號)

          (3) 重啟apache服務(wù)器

          (4) 重啟計算機(jī)

          curl的一些常用配置項

          (1) 通過CURLOPT_RETURNTRANSFER配置項設(shè)置,是直接顯示結(jié)果(echo)還是將結(jié)果返回(return)


          (2) 針對https協(xié)議的請求,需要驗證客戶端的安全證書,通常都會跳過安全證書的驗證

          (3) CURLOPT_HEADER是否返回header頭信息


          封裝的一個curl方法1:


          
          <?php
          /*
           * 使用curl擴(kuò)展發(fā)出http的get或post請求
           */
          class HttpRequest
          {
              //url,請求的服務(wù)器地址
              private $url='';
              
              //is_return,是否返回結(jié)果而不是直接顯示
              private $is_return=1;
              
              public function __set($p,$v)
          {
                  if(property_exists($this, $p)){
                      $this->$p=$v;
                  }
              }
              // 發(fā)出http請求的方法
              //參數(shù):提交的數(shù)據(jù),默認(rèn)是空的
              public function send($data=array())
          {
                  //1. 如果傳遞數(shù)據(jù)了,說明向服務(wù)器提交數(shù)據(jù)(post),如果沒有傳遞數(shù)據(jù),認(rèn)為從服務(wù)器讀取資源(get)
                  $ch=curl_init();
                  
                  //2. 不管是get、post,跳過證書的驗證
                  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
                  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
                  
                  //3. 設(shè)置請求的服務(wù)器地址
                  curl_setopt($ch, CURLOPT_URL, $this->url);
                  
                  //4. 判斷是get還是post
                  if(!empty($data)){
                      curl_setopt($ch, CURLOPT_POST, true);
                      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
                  }
                  //5. 是否返回數(shù)據(jù)
                  if($this->is_return===1){
                      //說明返回
                      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                      $result=curl_exec($ch);
                      curl_close($ch);
                      return $result;
                  }else{
                      //直接輸出
                      curl_exec($ch);
                      curl_close($ch);
                  }
              }
          }


          封裝的一個curl方法2:


          
          //curl采集器
          public function http_curl($url,$type='get',$res='json',$arr=''){
           //1.初始化curl
          $ch=curl_init();
           //2.設(shè)置curl的參數(shù)
           curl_setopt($ch,CURLOPT_URL,$url);
           curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
            if($type=='post'){
              curl_setopt($ch,CURLOPT_POST,1);
               curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
             }
           //3.采集
           $output=curl_exec($ch);
           //4.關(guān)閉
           curl_close($ch);
           //如果返回的值,是json格式,則轉(zhuǎn)換成數(shù)組
           if($res=='json'){
             if(curl_errno($ch)){
               //請求失敗,返回錯誤信息
               return curl_error($ch);
             }else{
               //請求成功
             return json_decode($output,true);
           }
           }
           }//http_curl end


          curl模擬文件上傳

          說明:PHP5.6之前的版本上傳文件使用:@

          Php5.6之后的版本使用new CURLFile()

          這樣其他服務(wù)器接收到數(shù)據(jù)之后,就可以移動了



          curl模擬cookie登錄

          (1) 我們訪問服務(wù)器時,服務(wù)器會先在服務(wù)器端創(chuàng)建一個session文件,保存用戶的信息,便于在多個頁面共享數(shù)據(jù),然后服務(wù)器會以setcookie的形式告訴客戶端在自己身上創(chuàng)建cookie,保存session文件的名,以前使用瀏覽器訪問服務(wù)器的時候,瀏覽器會在自己身上創(chuàng)建cookie文件,現(xiàn)在使用我們的服務(wù)器訪問:cookie保存到哪里?

          CURLOPT_COOKIEJAR配置項設(shè)置,cookie保存到哪里


          (2) 以后再訪問服務(wù)器的時候,隨身攜帶cookie(里面就是存儲的session文件的名字),那么怎么找到這個cookie呢?

          CURLOPT_COOKIEFILE 配置項設(shè)置,每次請求時攜帶哪個cookie文件


          PHP使用CURL詳解

          CURL是一個非常強(qiáng)大的開源庫,支持很多協(xié)議,包括HTTP、FTP、TELNET等,我們使用它來發(fā)送HTTP請求。它給我 們帶來的好處是可以通過靈活的選項設(shè)置不同的HTTP協(xié)議參數(shù),并且支持HTTPS。CURL可以根據(jù)URL前綴是“HTTP” 還是“HTTPS”自動選擇是否加密發(fā)送內(nèi)容。

          使用CURL發(fā)送請求的基本流程

          使用CURL的PHP擴(kuò)展完成一個HTTP請求的發(fā)送一般有以下幾個步驟:

          • 初始化連接句柄;
          • 設(shè)置CURL選項;
          • 執(zhí)行并獲取結(jié)果;
          • 釋放VURL連接句柄。


          下面的程序片段是使用CURL發(fā)送HTTP的典型過程


          
          // 1. 初始化
           $ch=curl_init();
           // 2. 設(shè)置選項,包括URL
           curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
           curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
           curl_setopt($ch,CURLOPT_HEADER,0);
           // 3. 執(zhí)行并獲取HTML文檔內(nèi)容
           $output=curl_exec($ch);
           if($output===FALSE ){
           echo "CURL Error:".curl_error($ch);
           }
           // 4. 釋放curl句柄
           curl_close($ch);

          上述代碼中使用到了四個函數(shù)


          ①curl_init() 和 curl_close() 分別是初始化CURL連接和關(guān)閉CURL連接,都比較簡單。

          ②curl_exec() 執(zhí)行CURL請求,如果沒有錯誤發(fā)生,該函數(shù)的返回是對應(yīng)URL返回的數(shù)據(jù),以字符串表示滿意;如果發(fā)生錯誤,該函數(shù)返回 FALSE。需要注意的是,判斷輸出是否為FALSE用的是全等號,這是為了區(qū)分返回空串和出錯的情況。

          ③CURL函數(shù)庫里最重要的函數(shù)是curl_setopt(),它可以通過設(shè)定CURL函數(shù)庫定義的選項來定制HTTP請求。上述代碼片段中使用了三個重要的選項:

          • CURLOPT_URL 指定請求的URL;
          • CURLOPT_RETURNTRANSFER 設(shè)置為1表示稍后執(zhí)行的curl_exec函數(shù)的返回是URL的返回字符串,而不是把返回字符串定向到標(biāo)準(zhǔn)輸出并返回TRUE;
          • CURLLOPT_HEADER設(shè)置為0表示不返回HTTP頭部信息。

          CURL的選項還有很多,可以到PHP的官方網(wǎng)站上查看CURL支持的所有選項列表。


          獲取CURL請求的輸出信息

          在curl_exec()函數(shù)執(zhí)行之后,可以使用curl_getinfo()函數(shù)獲取CURL請求輸出的相關(guān)信息,示例代碼如下:


          curl_exec($ch);
          $info=curl_getinfo($sh);
          echo ' 獲取 '.$info['url'].'耗時'.$info['total_time'].'秒';

          上述代碼中curl_getinfo返回的是一個關(guān)聯(lián)數(shù)組,包含以下數(shù)據(jù):

          • url:網(wǎng)絡(luò)地址。
          • content_type:內(nèi)容編碼。
          • http_code:HTTP狀態(tài)碼。
          • header_size:header的大小。
          • request_size:請求的大小。
          • filetime:文件創(chuàng)建的時間。
          • ssl_verify_result:SSL驗證結(jié)果。
          • redirect_count:跳轉(zhuǎn)計數(shù)。
          • total_time:總耗時。
          • namelookup_time:DNS查詢耗時。
          • connect_time:等待連接耗時。
          • pretransfer_time:傳輸前準(zhǔn)備耗時。
          • size_uplpad:上傳數(shù)據(jù)的大小。
          • size_download:下載數(shù)據(jù)的大小。
          • speed_download:下載速度。
          • speed_upload:上傳速度。
          • download_content_length:下載內(nèi)容的長度。
          • upload_content_length:上傳內(nèi)容的長度。
          • starttransfer_time:開始傳輸?shù)臅r間表。
          • redirect_time:重定向耗時。


          curl_getinfo()函數(shù)還有一個可選擇參數(shù)$opt,通過這個參數(shù)可以設(shè)置一些常量,對應(yīng)到上述這個字段,如果設(shè)置了第二個參數(shù),那么返回的只有指定的信息。例如設(shè)置$opt為CURLINFO_TOTAL_TIME,則curl_getinfo()函數(shù)只返回total_time,即總傳輸消耗的時間,在只需要關(guān)注某些傳輸信息時,設(shè)置$opt參數(shù)很有意義。

          使用CURL發(fā)送GET請求

          如何使用CURL來發(fā)送GET請求,發(fā)送GET請求的關(guān)鍵是拼裝格式正確的URL。請求地址和GET數(shù)據(jù)由一個“?”分割,然后GET變量的名稱和值用“=”分隔,各個GET名稱和值由“&”連接。PHP為我們提供了一個函數(shù)專門用來拼裝GET請求和數(shù)據(jù)部分——http_build_query,該函數(shù)接受一個關(guān)聯(lián)數(shù)組,返回由該關(guān)聯(lián)數(shù)據(jù)描述的GET請求字符串。使用這個函數(shù),結(jié)合CURL發(fā)送HTTP請求的一般流程,我們封閉了一個發(fā)送GET請求的函數(shù)——doCurlGetRequest,具體代碼如下:


          
          **
           *@desc 封閉curl的調(diào)用接口,get的請求方式。
          */
          function doCurlGetRequest($url,$data,$timeout=5){
           if($curl=="" || $timeout <=0){
           return false;
           }
           $url=$url.'?'.http_bulid_query($data);
           $con=curl_init((string)$url);
           curl_setopt($con, CURLOPT_HEADER, false);
           curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
           curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
           
           return curl_exec($con);
          }

          這個函數(shù)把使用http_build_query 拼裝好的帶GET參數(shù)的URL傳給curl_init函數(shù),然后使用CURL發(fā)送HTTP請求。

          使用CURL發(fā)送POST請求

          可以使用CURL提供的選項CURLOPT_POSTFIELDS,設(shè)置該選項為POST字符串?dāng)?shù)據(jù)就可以把請求放在正文中。同樣我們實現(xiàn)了一個發(fā)送POST請求的函數(shù)——doCurlPostRequest,代碼如下:


          
          /**
          ** @desc 封裝 curl 的調(diào)用接口,post的請求方式
          **/
          function doCurlPostRequest($url,$requestString,$timeout=5){
           if($url=='' || $requestString=='' || $timeout <=0){
           return false;
           }
           $con=curl_init((string)$url);
           curl_setopt($con, CURLOPT_HEADER, false);
           curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
           curl_setopt($con, CURLOPT_POST,true);
           curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
           curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
           return curl_exec($con);
          }

          上面代碼中除了設(shè)置CURLOPT_POSTFIELDS外,我們還設(shè)置了CURL_POST為true,標(biāo)識這個請求是一個POST請求。在POST請求中也是可以傳輸GET數(shù)據(jù)的,只需要在URL中拼裝GET請求數(shù)據(jù)即可。

          領(lǐng)取方式:點贊關(guān)注小編后私信【資料】獲取資料領(lǐng)取方式!

          在使用 Apache JMeter 進(jìn)行性能測試時,處理中文字符可能會遇到亂碼問題。這不僅影響測試結(jié)果的正確性,還會導(dǎo)致測試報告難以理解。本文將詳細(xì)介紹如何解決 JMeter 返回內(nèi)容中的中文亂碼問題,從配置文件設(shè)置到編碼轉(zhuǎn)換,幫助測試工程師順利進(jìn)行性能測試。

          常見的中文亂碼問題

          在 JMeter 中進(jìn)行性能測試時,常見的中文亂碼問題通常出現(xiàn)在以下幾個方面:

          1. 請求參數(shù)的中文亂碼:發(fā)送的請求中包含中文參數(shù)時,服務(wù)器接收到的參數(shù)是亂碼。
          2. 響應(yīng)數(shù)據(jù)的中文亂碼:服務(wù)器返回的響應(yīng)數(shù)據(jù)中包含中文字符時,JMeter 顯示為亂碼。
          3. CSV 數(shù)據(jù)文件的中文亂碼:使用 CSV 數(shù)據(jù)文件進(jìn)行參數(shù)化測試時,文件中的中文內(nèi)容在 JMeter 中顯示為亂碼。

          解決方法

          1. 設(shè)置 JMeter 的編碼

          修改 JMeter 配置文件

          JMeter 的默認(rèn)編碼是 ISO-8859-1,可以通過修改 jmeter.properties 配置文件來設(shè)置默認(rèn)編碼為 UTF-8

          • 打開 JMeter 安裝目錄下的 bin 文件夾。
          • 找到并編輯 jmeter.properties 文件。
          • 找到以下配置項,并將其取消注釋(去掉前面的 #)并設(shè)置為 UTF-8
          bashsampleresult.default.encoding=UTF-8
          
          • 保存文件并重新啟動 JMeter。

          設(shè)置 HTTP 請求的編碼

          在每個 HTTP 請求中,可以通過設(shè)置參數(shù)來指定請求和響應(yīng)的編碼。

          • 選擇一個 HTTP 請求采樣器。
          • 在 “參數(shù)” 部分,添加一個新的參數(shù) Content-Encoding,值設(shè)置為 UTF-8
          • 同樣,在 “響應(yīng)數(shù)據(jù)” 部分,確保 “響應(yīng)數(shù)據(jù)的文本編碼” 設(shè)置為 UTF-8
          1. 配置請求參數(shù)的編碼

          當(dāng)發(fā)送包含中文字符的請求參數(shù)時,需要確保參數(shù)的編碼設(shè)置正確。

          示例代碼

          yamlTest Plan
          └── Thread Group
              └── HTTP Request
                  ├── Server Name or IP: example.com
                  ├── Path: /api/test
                  ├── Parameters:
                  │   ├── name: 參數(shù)值
                  └── Content-Encoding: UTF-8
          
          1. 處理響應(yīng)數(shù)據(jù)的編碼

          如果服務(wù)器返回的響應(yīng)數(shù)據(jù)中包含中文字符,需要確保 JMeter 能夠正確解碼這些數(shù)據(jù)。

          使用后置處理器

          可以使用 BeanShell 后置處理器或 JSR223 后置處理器來處理響應(yīng)數(shù)據(jù)的編碼。

          示例代碼(使用 JSR223 后置處理器)

          1. 在 HTTP 請求采樣器下添加一個 JSR223 后置處理器。
          2. 選擇語言為 groovy
          3. 添加以下代碼,將響應(yīng)數(shù)據(jù)的編碼轉(zhuǎn)換為 UTF-8
          bashprev.setDataEncoding("UTF-8")
          
          1. 處理 CSV 數(shù)據(jù)文件的編碼

          當(dāng)使用 CSV 數(shù)據(jù)文件進(jìn)行參數(shù)化測試時,確保文件的編碼格式為 UTF-8,并在 JMeter 中正確配置。

          保存 CSV 文件為 UTF-8 編碼

          在編輯 CSV 文件時,使用支持 UTF-8 編碼的文本編輯器(如 Notepad++、Sublime Text)保存文件。

          配置 CSV Data Set Config

          • 添加一個 CSV Data Set Config 元件。
          • 選擇 CSV 文件路徑。
          • 確保 “文件編碼” 字段設(shè)置為 UTF-8
          1. 配置瀏覽器模擬的編碼

          在進(jìn)行某些測試時,可能需要模擬特定瀏覽器的行為。通過設(shè)置 HTTP Header,可以模擬瀏覽器發(fā)送的請求編碼。

          示例代碼(使用 HTTP Header Manager)

          • 在 HTTP 請求采樣器下添加一個 HTTP Header Manager。
          • 添加以下頭信息:
          yamlHeader Name: Content-Type
          Header Value: application/x-www-form-urlencoded; charset=UTF-8
          

          實踐操作示例

          以下是一個完整的實踐操作示例,展示了如何在 JMeter 中解決返回內(nèi)容的中文亂碼問題。

          環(huán)境搭建

          假設(shè)我們有一個測試環(huán)境,包含以下接口:

          • URL: http://example.com/api/test
          • 請求方法: POST
          • 請求參數(shù): name,值為中文字符(如 “測試”)
          • 響應(yīng): JSON 格式,包含中文字段

          配置步驟

          1. 添加線程組:在測試計劃中添加一個線程組。
          2. 添加 HTTP 請求采樣器:配置請求的 URL、方法和參數(shù),并設(shè)置 Content-EncodingUTF-8
          3. 添加 HTTP Header Manager:添加 Content-Type 頭信息,值設(shè)置為 application/x-www-form-urlencoded; charset=UTF-8
          4. 添加 JSR223 后置處理器:設(shè)置響應(yīng)數(shù)據(jù)的編碼為 UTF-8

          JMeter 配置示例

          yamlTest Plan
          └── Thread Group
              └── HTTP Request
                  ├── Server Name or IP: example.com
                  ├── Path: /api/test
                  ├── Method: POST
                  ├── Parameters:
                  │   ├── name: 測試
                  ├── Content-Encoding: UTF-8
                  └── HTTP Header Manager
                      ├── Header Name: Content-Type
                      └── Header Value: application/x-www-form-urlencoded; charset=UTF-8
                  └── JSR223 PostProcessor
                      ├── Language: groovy
                      └── Script: prev.setDataEncoding("UTF-8")
          

          總結(jié)

          通過本文的學(xué)習(xí),我們已經(jīng)掌握了在 JMeter 中解決返回內(nèi)容中文亂碼問題的各種方法。這些方法不僅能提高測試結(jié)果的準(zhǔn)確性,還能提升測試報告的可讀性。

          題一、批處理調(diào)試控制臺顯示中文亂碼

          問題二、右鍵菜單項里的open with sublime text的Icon圖標(biāo)缺失

          右鍵菜單項里的open with sublime text的Icon圖標(biāo)缺失

          最近閑的,學(xué)習(xí)一下批處理命令,想起來sublime text輕量級便捷開啟迅速,于是重新安裝了最新版本的sublime text4-4169,卸載sublime text3,重新配置text 4。記錄一下使用過程的小坑。

          下載、安裝、配置、使用

          適用范圍:用于Windows 下Sublime Text4 4169版本的安裝和激活

          官網(wǎng)下載地址:https://www.sublimetext.com

          64位版本地址:

          https://download.sublimetext.com/sublime_text_build_4169_x64_setup.exe

          32位版本地址:

          https://download.sublimetext.com/sublime_text_build_4169_x32_setup.exe

          安裝:

          默認(rèn)安裝,一直 下一步next 下一步 既可以。安裝后部分電腦有可能出現(xiàn)右鍵菜單項里的open with sublime text的Icon圖標(biāo)缺失,可以在注冊表位置

          計算機(jī)\HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text

          下面修改并添加 數(shù)值名稱:Icon,數(shù)值數(shù)據(jù):C:\Program Files\Sublime Text\sublime_text.exe

          修改注冊表如圖,

          最終結(jié)果圖

          正常顯示圖


          激活:

          方法一:替換“C:\Program Files\Sublime Text”下文件sublime_text.exe。附下載替換文件下載地址:此處無法鏈接

          方法二:修改文件exe文件的值

          使用sublime text 打開安裝目錄下的sublime_text.exe文件。(自己打開自己,有點一意思吧,修改后另存為。。。)

          Ctrl + F 搜到到

          80 7805 000f

          94c1

          更改為

          c6 4005 0148

          85c9

          注意:80 7805 000f和94c1是在兩行,搜索可以直接替換

          簡單配置 1、軟件安裝中文語言包

          1、點擊菜單欄Tools—>Install Package Control 跳出彈框點擊 確定按鈕

          2、點擊菜單欄 Preferences – Package Control

          3、彈框中輸入 install package,選中 Package Control: Install Package 然后等待彈窗(可能需要耐心等待一段時間)

          4、等出現(xiàn)如下彈窗后, 在彈窗的搜索框中輸入 ChineseLocalizations , 點擊出現(xiàn)的選項

          5、等待一段時間,如果出現(xiàn)了如下畫面則漢化步驟全部完成

          6、后續(xù)若需要更改,可點擊菜單欄 幫助-–>Language 選擇進(jìn)行更改。

          第一個細(xì)節(jié):如果在使用Sublime Text過程中,如果不小心按下Esc鍵就會進(jìn)入command mode(Vim模式),之后就出現(xiàn)不能輸入任何東西,關(guān)閉當(dāng)前編輯文件重新打開可以解決。但是很影響連貫性,所以可以通過以下方法解決:

          Sublime Text使用過程中進(jìn)入Vim模式,可以關(guān)閉vim模式:

          進(jìn)入settings,加入:

          // 關(guān)閉Vim模式,防止Sublime Text使用過程中進(jìn)入Vim模式

          "ignored_packages":

          [

          "Vintage"

          ],

          如果不想禁用Vim模式,又無意進(jìn)入Vim模式可以進(jìn)行以下操作退出Vim模式:

          按a鍵 或者i鍵 或者o鍵三個按鍵中任何一個就可以回到insert mode,也就是編輯模式

          當(dāng)然還可以:在軟件菜單里找到設(shè)置,會彈出Json格式的文件,也就是Sublime Text的配置文件。

          對,是配置文件,不是圖形化界面。也是Sublime任性,設(shè)置頁堅決不用GUI顯示,只用配置文件。

          很簡單,找到User 配置(Preferences.sublime-settings)這個文件,然后將ignored_packages數(shù)組中的Vintage數(shù)值刪除即可,然后就變?yōu)閂im和Sublime模式通用了。如果再屏蔽vim模式,只要再將Vintage加回去該數(shù)組即可。

          下面是簡單應(yīng)用場景:

          Sublime Text 4 運(yùn)行批處理文件 .bat格式

          Sublime Text 4 編輯好 windows 批處理文件后,如果希望直接在 sublime 內(nèi)部運(yùn)行,并且看到運(yùn)行結(jié)果,可以使用 sublime 提供的編譯系統(tǒng)(Build System)完成。

          首先,新建一個編譯系統(tǒng)

          Tools -> Build System -> New Build System..

          這時 Sublime 會幫你新創(chuàng)建一個叫 untitled.sublime-build 的文件,里面原來的內(nèi)容是這樣:

          {

          "shell_cmd": "make"

          }

          替換為下面內(nèi)容:

          {

          "cmd": ["cmd.exe", "/c", "${file}"]

          }

          或者簡單點也行:

          {"cmd": ["$file"]}

          保存文件,在彈出的路徑選擇框中,不需要選擇其他路徑,直接按默認(rèn)路徑保存,一般來說是下面這樣的路徑:

          C:\Users[用戶名]\AppData\Roaming\Sublime Text 4\Packages\User

          保存的文件名則按照你希望的菜單里出現(xiàn)的樣子,比如名字叫做 DosRunBatch.sublime-build, 保存后,Build System 菜單里就會出現(xiàn)你剛剛創(chuàng)建的 DosRunBatch名字,選擇后,就能按鍵盤快捷鍵 Ctrl + B 直接運(yùn)行 windows 批處理文件,效果如下:

          使用過程避坑:

          圖一:控制臺不能顯示中文或是部分中文顯示亂碼,具體表示:

          1. 使用ANSI編碼保存的bat文件在sublime text編輯界面會亂碼,控制臺顯示中文亂碼。
          1. 使用UTF8I編碼保存的bat文件在sublime text編輯界面正常,但控制臺顯示請按任意鍵繼續(xù). . .字樣會亂碼。而文件中的中文echo回顯沒有問題,如圖:

          原因和解決辦法:

          1. Bat文件格式原始編碼為ANSI。在cmd窗口運(yùn)行時候可以看到顯示是正常的。

          想要sublime text顯示正常的臨時解決辦法是:

          編譯系統(tǒng)文件增加一行代碼"encoding":"cp936".

          {

          "cmd": ["cmd.exe", "/c", "${file}"],

          "encoding":"cp936",

          }

          2、Bat文件格式原始編碼為UTF8。在cmd窗口運(yùn)行時候就是中文亂碼,而在sublime text調(diào)試確是正常的()僅僅是cmd下(請按任意鍵繼續(xù). . .)幾個字符亂碼。但是在cmd窗口調(diào)試echo回顯中文直接亂碼,如前面的圖片

          想要cmd窗口運(yùn)行調(diào)試顯示正常的臨時解決辦法是:

          在批處理首行加上:chcp 65001,結(jié)果如圖:

          上面有點繞,總結(jié)就是原始文件保存格式為ANSI和UTF8會有區(qū)別。

          Cmd運(yùn)行下ANSI編碼格式bat文件正常,UTF8編碼格式bat文件-亂碼

          Sublime text調(diào)試控制臺顯示ANSI編碼格式bat文件亂碼,UTF8編碼格式bat文件正常。

          解決辦法:

          一、Cmd運(yùn)行下

          ANSI編碼格式bat文件正常無需處理。

          UTF8編碼格式bat文件-亂碼處理:bat文件首行添加chcp 65001。

          二、sublime text控制臺調(diào)試下

          ANSI編碼格式bat文件控制臺亂碼處理:

          編譯系統(tǒng)文件增加一行代碼"encoding":"cp936".

          {

          "cmd": ["cmd.exe", "/c", "${file}"],

          "encoding":"cp936",

          }

          UTF8編碼格式bat文件正常無需處理

          {

          "cmd": ["cmd.exe", "/c", "${file}"],

          // "encoding":"cp936", UTF8編碼格式bat文件的編譯系統(tǒng)切換為無encoding

          }

          附記sublime text4配置python:

          sublime text配置python的編譯系統(tǒng)和調(diào)試過程中中文顯示亂碼

          Build system構(gòu)建系統(tǒng)的示例:同前面描述一樣構(gòu)建系統(tǒng)是 JSON 文件 并具有擴(kuò)展名python3.sublime-build

          {

          "cmd": ["e:/vevn/env/Scripts/python.exe","-u","$file"],

          "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

          "selector": "source.python",

          "env":{"PYTHONIOENCODING": "utf8"}

          }

          示例的解釋:

          {

          "cmd": ["此處為python安裝程序的全路徑", "-u", "$file"],

          "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

          "selector": "source.python",

          "env":{"PYTHONIOENCODING": "utf8"}此處解決顯示中文亂碼問題

          }

          以上親測有效---針對本機(jī)和本版本:


          主站蜘蛛池模板: 日本亚洲成高清一区二区三区| 韩日午夜在线资源一区二区| 国产成人精品一区二区三区| 无码欧精品亚洲日韩一区| 三级韩国一区久久二区综合| 一区二区三区在线免费| 亚洲福利视频一区二区| 国产日韩高清一区二区三区| 久久一区二区三区免费播放| 亚洲一区在线观看视频| 日本国产一区二区三区在线观看| 亚洲日韩AV无码一区二区三区人| 蜜桃传媒一区二区亚洲AV| 国产精品免费视频一区| 中文字幕人妻丝袜乱一区三区| 国产人妖视频一区二区 | 少妇人妻精品一区二区| 一区二区精品视频| 无码精品人妻一区二区三区中 | 国产91久久精品一区二区| 日本一道一区二区免费看| 亚洲一区无码精品色| 无码国产精品一区二区免费 | 国精无码欧精品亚洲一区| 国产成人精品久久一区二区三区| 无码一区二区三区亚洲人妻| 台湾无码AV一区二区三区| 久久久无码精品人妻一区| 久久精品国产一区二区| 精品国产一区二区三区无码| 日本一区二区三区在线视频| 少妇激情AV一区二区三区| 人妻无码一区二区三区| 国产精品高清一区二区三区不卡| 精品成人一区二区三区四区| 国产一区二区久久久| 美女福利视频一区| 一区二区三区在线免费观看视频| 国产精品电影一区| 国产精品丝袜一区二区三区 | 久久一区二区明星换脸|