osg 中顯示中文字元出現亂碼問題

2021-06-28 23:38:40 字數 1171 閱讀 7868

osg中建立字型函式:

osg::node* createtext(wchar_t * str,double pos[3],double rgba[4],int textsize ,char * textname)

呼叫建立字型函式

void osgcreatetext(char* str,double pos[3],double rgba[4],int textsize ,char * textname,char *osgnodename)

這裡就有將char * 轉換為wchar_t *型別的工作。

起初我用如下方式:

char *str = "***";

size_t len = strlen(str) + 1;

size_t converted = 0;

wchar_t *wstr;

wstr = (wchar_t *)malloc(len * sizeof(wchar_t));

mbstowcs_s(&converted,wstr,len,cstr,_truncate);

這個方式可以將char* 轉換為wchar_t *;

但是經除錯,在osg顯示的結果還是為亂碼。

後來我測試了一種方式:

osg::ref_ptrtext2 = createtext(l"你好dfa",osg::vec3(20,21,0),osg::vec4(255,255,0,1));

就能成功的在osg上顯示中文。由此可見"l"起了作用,那這個"l"到底是何方聖神呢?

經查詢,這個l代表寬字元(unicode);

所有我就將 char * 轉換為寬字元,問題就解決了。

**如下:

//將字元轉換為寬字元

int nlen = multibytetowidechar(cp_acp,mb_precomposed,str,-1,null,0);

if (nlen > 0)

QT 中文字元亂碼

qstring qbytearray 後位元組碼與window下的不對。下面的中文字元 中國人民億 data是我正常後的gbk位元組,value是直接使用 qstring totoutf8 qstring tolocal8bit 之類的與期望不符的位元組碼。首先qstring 轉換成qbytearr...

關於MySQL中文字元出現亂碼的問題

既然今天寫了個部落格序言,今天總還得寫點別的什麼東西吧,呵呵!好啦,現在就來個現炒現賣的。由於本人正在做乙個資料庫遷移工具,主要是在access foxpro sqlserver mysql oracle dbase paradox等桌面的,伺服器型的各類資料庫之間進行整個資料庫的遷移,但是由於以前...

MySQL不能插入中文字元及中文字元亂碼問題

mysql的預設編碼是latin1,不支援中文,要支援中午需要把資料庫的預設編碼修改為gbk或者utf8。在安裝後mysql之後,它的配置檔案不是很給力,不知道你們的是不是,反正我的是!開始插入中文字元的時候出現如下錯誤 error 1366 hy000 incorrect string value...