Vs2008中ofstream不能讀取帶有中文的路徑
有時候用ifstream 或ofstream 開啟帶有中文路徑的檔案會失敗。
解決辦法:
1
、使用C
語言的函式設定為中文執行環境
setlocale(LC_ALL,"Chinese-simplified");
2
、使用STL
函式設定為系統語言環境
std::locale::global(std::locale(""));
當然選2 啦!
ofstream writefile;
string filename=("d:/ 我的文件/ 測試.txt");
locale loc = locale::global(locale("")); // 要開啟的檔案路徑含中文,設定全域性locale
writefile.open(filename.c_str(),ios::out); // 開啟檔案
locale::global(loc);// 恢復全域性locale
用locale 物件的name 方法可以看到,通過locale("") 構造出的locale 物件的name 為"Chinese_People's Republic of China.936" ,而原始的locale 物件的name 為"C" ,也就是預設的ANSI _C 公約。
注意:如果使用locale loc = locale::global(locale("")) 設定全域性locale 後沒有用 locale::global(loc)
先將CString 轉為char*
CString str=view->m_sFilePath;
//CString str = "";
//ofstream
中傳的引數不能有漢字,必須轉換一下是其暫緩方法
str.AppendFormat("cluster%d%d.txt",aMatrix->X_part,aMatrix->Y_part);
char* sz =
str.GetBuffer(str.GetLength());
locale loc = locale::global(locale(""));
ofstream ofile(sz);
轉載網友方法:
/*
方法1
,使用_TEXT()
巨集定義將字串常量指定為TCHAR*
型別 這種情況下必須是unicode
下編譯 */
18: /*
如果是我,首選此型別
*/
19:
/************************************************************************/
20: fstream file;
21: file.open(_TEXT("c://
測試//
測試文字.txt"));
22: cout<<file.rdbuf();
23: file.close();
24:
25:
/************************************************************************/
26: /*
方法2
,使用STL
中的locale
類的靜態方法指定全域性locale
*/
27: /*
使用該方法以後,cout
可能不能正常輸出中文,十分蹊蹺 */
28: /*
我發現了勉強解決的方法:不要在還原區域設定前用cout
或wcout
輸出中文
*/
29: /*
否則後果就是還原區域設定後無法使用cout wcout
輸出中文
*/
30:
/************************************************************************/
31: locale::global(locale(""));//
將全域性區域設為作業系統預設區域
32: file.open("c://
測試//
測試文字2.txt");//
可以順利開啟檔案了
33:
locale::global(locale("C"));//
還原全域性區域設定
34: cout<<file.rdbuf();
35: file.close();
36:
37:
/************************************************************************/
38: /*
方法3
,使用C
函式setlocale
,不能用cout
輸出中文的問題解決方法同上 */
39:
/************************************************************************/
40:
setlocale(LC_ALL,"Chinese-simplified");//
設定中文環境
41: file.open("c://
測試//
測試文字3.txt");//
可以順利開啟檔案了
42: setlocale(LC_ALL,"C");//
還原
43: cout<<file.rdbuf();
44: file.close();
45: }
相關推薦
Vs2008中ofstream不能讀取帶有中文的路徑
有時候用ifstream 或ofstream 開啟帶有中文路徑的檔案會失敗。 解決辦法: 1 、使用C 語言的函式設定為中文執行環境setlocale(LC_ALL,"Chinese-simplified"); 2 、使用STL 函式設定為系統語言環境std::loc
使用configparser讀取帶有中文的配置文件出現UnicodeDecodeError錯誤
中文註釋 img term leg 配置文件 The text 沒有 Coding 問題: 使用configparser讀取配置文件時,出現UnicodeDecodeError錯誤,在沒有任何中文的時候讀取可以的,加了1句中文註釋後就拋出異常,異常如下: UnicodeD
SQL查詢語句中參數帶有中文查詢不到結果
div -s navi user true color 技術 發現 col 今天寫個小demo的時候發現sql語句裏面的username為中文的時候就不能查到正確結果,sql語句如下: String sql = "select * from user where user
python opencv中無法讀寫中文路徑圖片的解決辦法
讀取圖片: img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 1) 其中img_path為讀取圖片路徑,可以包含中文 儲存圖片: cv2.imencode('.jpg', src)[1]
URL中引數值帶有中文的解決方案
在專案中,總是難以避免url中帶中文的情況. 後臺生成的Url中帶有中文: 則中文值應該用URLEncoder.encode進行編碼 serviceName = URLEncoder.encode
解決Unity 中WWW載入 AssetBundle---中文路徑
今天在 寫 檔案的時候遇到一個坑, www 載入檔案,不能支援中路徑, 我了個去~ 恰好我的persistPath 是中文的! 我去! 然後找到這麼一個解決方法: using UnityEngine; using System.Collections; usi
python3下使用cv2.imwrite儲存帶有中文路徑圖片
由於imwrite前使用編碼在python3中已經不適用,可用imencode代替,以下程式碼是從視訊中獲取第2幀儲存在中文資料夾下的例項: cap = cv2.VideoCapture("***.
徹底解決 cv2.imread讀取帶中文路徑圖片問題
原因:cv2.imread讀不到帶中文路徑圖片 解決: import cv2 import numpy as np cv2.imdecode(np.fromfile("D:\\haha哈哈.png",dtype=np.uint8),,cv2.IMRE
python3.6 opencv 讀取帶中文路徑的圖&&儲存圖片到帶中文的路徑下
#可以讀取帶中文路徑的圖 def cv_imread(file_path,type=0): cv_img=cv2.imdecode(np.fromfile(file_path,dtype=np.
Python OpenCV _1基本操作(畫圖,迴圈播放影象,滑鼠事件,讀取中文路徑中的圖片)
此係列原始碼在我的GitHub裡:https://github.com/yeyujujishou19/Python-OpenCV 一,OpenCV的結構 A)根據功能和需求的不同,OpenCV中的函式介面大體可以分為如下部分: core 核心模組,主要包
C#中StreamReader讀取中文時出現亂碼問題總結
utf8編碼 新的 conf window linu img utf8 enc ref 之前有一篇文章“ C#讀取及寫入配置文件教程”(http://blog.csdn.net/lisenyang/article/details/47291083)當中有一個問題就是在讀
解決方式-在Mac系統中,Eclipse無法導入含有中文路徑的project
導入 pan support cati 一行 oct tracking -a ctype 1、改動eclipse.app/Contents/Info.plist。查找 <key>CFBundleExecutable<key>在其上方加入下面
url中含有中文路徑時訪問出現404問題
pat find() 訪問 col pub 文字 str static color /** * URL中文字符編碼轉換 * @param url 含中文字符的URL * @return */ public static String getC
[轉]C#中StreamReader讀取中文出現亂碼
摘自:C#中StreamReader讀取中文出現亂碼 原因是自Windows 2000之後的作業系統在檔案處理時預設編碼採用Unicode所以.NET檔案的預設編碼也是Unicode。除非另外指定,StreamReader的預設編碼為Unicode,而不是當前系統的ANSI內碼表。但是文件大部分還是以ANS
SQL查詢語句中引數帶有中文查詢不到結果
今天寫個小demo的時候發現sql語句裡面的username為中文的時候就不能查到正確結果,sql語句如下: String sql = "select * from user where username=? and password=?"; 但是在navicat裡面直接查詢就能
python2及python3下關於cv2讀取中文路徑下的圖片以及在圖片上顯示中文的問題
1.python2下讀取中文路徑圖片 示例如下: import cv2 img_path = '劉昊然.jpg ' #圖片和py檔案放在一個資料夾下,所以不用寫絕對路徑 im = cv2.imread(img_path.decode(‘utf-8')) 2.pyth
【python】中open函式在遇到中文路徑的解決方法
# 儲存到檔案中 file_name = 'G:/pycode/mahongpengTest/biquge/dawangraoming/' + str(novel_chapter) + '.txt' with open(file_name_utf8,'a')
VS2017編譯GDAL(64bit)+解決C#讀取Shp資料中文路徑的問題
編譯GDAL過程比較繁瑣,查閱了網上相關資料,同時通過實踐,完成GDAL的編譯,同時解決了SHP資料中文路徑及中文欄位亂碼的問題,本文以“gdal-2.3.2”版本為例闡述整個編譯過程。 一、編譯準備 1、編譯工具是VS2017,編譯前需要下載“gdal-2.3.2”和“swigwin-3.0.12”,下載連
在plsql , sql語句中帶有中文的查詢條件查詢不到資料
PLSQL Developer中文顯示亂碼是因為Oracle資料庫所用的編碼和PLSQL Developer所用的編碼不同所導致的。 解決方法: - 1. 先查詢Oracle所用的編碼 select userenv('language') from dual; **
客戶端提交資料給伺服器端,如果資料中帶有中文的話,有可能會出現亂碼情況
request: 如果是GET方式 程式碼轉碼 String username = request.getParameter("username"); String password = request.getParameter("password"); String use