लिनक्स रन में निम्न आदेश: लोकेल | egrep "LANG =" | कट-डी -एफ 2
यूनिक्स जैसी प्रणालियों पर, फ़ाइल नामों का एन्कोडिंग फाइल सिस्टम स्तर पर सेट नहीं है, बल्कि उपयोगकर्ता वातावरण में। उदाहरण के लिए, यूटीएफ -8 उबंटू में डिफ़ॉल्ट सेटिंग है।
विंडोज डिफ़ॉल्ट एन्कोडिंग पर सीपी -1252 (AKA आईएसओ -885 9 -1 या लैटिन -1) है, लेकिन एफएस यूटीएफ -16 एन्कोडिंग के माध्यम से यूनिकोड का उपयोग करता है। http://en.wikipedia.org/wiki/Filename देखें।
लेकिन यदि आप क्यूटी का उपयोग करते हैं, तो आप क्यूटी निर्माता के साथ निम्नलिखित निर्माण कर सकते हैं और परिणाम वर्तमान उपयोगकर्ता एन्कोडिंग नाम हो सकते हैं।
#include <QTextCodec>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
Q_UNUSED(argc); Q_UNUSED(argv);
QTextCodec* tc = QTextCodec::codecForLocale();
cout << "Current names text codec: " << tc->name().data() << endl;
return 0;
}
यह फिलसिस्टम पर निर्भर करता है। कुछ फाइल सिस्टम चरित्र एन्कोडिंग का समर्थन करते हैं, और कुछ केवल एक। और अधिकांश फाइल सिस्टम में एन्कोडिंग को स्टोर नहीं करते हैं क्योंकि एन्कोडिंग पहले से ही इसके विनिर्देश दस्तावेज़ द्वारा परिभाषित किया गया है। आपको इन जानकारी को मैन्युअल रूप से अपने डेटाबेस में संग्रहीत करना होगा। – Jay
यह वास्तव में एपीआई पर निर्भर करता है, और इस प्रकार आप प्लेटफ़ॉर्म (ओएस) का उपयोग कर रहे हैं। हालांकि, सी ++ 17 में फाइल सिस्टम मानक पुस्तकालय पूर्ण और शामिल हो सकता है, जो शायद किसी भी तरह से इस समस्या को हल करना चाहिए। –