aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Common/utf8.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-08-06 16:22:00 +0800
committerchai <chaifix@163.com>2018-08-06 16:22:00 +0800
commit89e7a9ecfad9a54633eb3ebbab1d1f13ad78826f (patch)
tree1ba8a806af1b8e7750d6b637c296f08e13cf268e /src/libjin/Common/utf8.cpp
parentea9769944a2db3abe15f537dab67e16fdfc20bef (diff)
*update
Diffstat (limited to 'src/libjin/Common/utf8.cpp')
-rw-r--r--src/libjin/Common/utf8.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/libjin/Common/utf8.cpp b/src/libjin/Common/utf8.cpp
new file mode 100644
index 0000000..f21a0d9
--- /dev/null
+++ b/src/libjin/Common/utf8.cpp
@@ -0,0 +1,42 @@
+#include "../modules.h"
+#if JIN_OS == JIN_WINDOWS
+
+#include "utf8.h"
+
+namespace jin
+{
+
+ std::string to_utf8(LPCWSTR wstr)
+ {
+ size_t wide_len = wcslen(wstr) + 1;
+
+ // Get size in UTF-8.
+ int utf8_size = WideCharToMultiByte(CP_UTF8, 0, wstr, wide_len, 0, 0, 0, 0);
+
+ char * utf8_str = new char[utf8_size];
+
+ // Convert to UTF-8.
+ int ok = WideCharToMultiByte(CP_UTF8, 0, wstr, wide_len, utf8_str, utf8_size, 0, 0);
+
+ if (!ok)
+ {
+ delete[] utf8_str;
+ }
+
+ return ok ? std::string(utf8_str) : std::string();
+ }
+
+ void replace_char(std::string & str, char find, char replace)
+ {
+ int length = str.length();
+
+ for (int i = 0; i<length; i++)
+ {
+ if (str[i] == find)
+ str[i] = replace;
+ }
+ }
+
+} // jins
+
+#endif // JIN_OS == JIN_WINDOWS \ No newline at end of file