青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 665358
排名 - 24
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11085)
2.?SVN中邪惡的replace(11014)
3.?VS2005編譯libevent(10475)
4.?混音算法的學習與研究(10274)
5.?C調用lua腳本的效率測試(9030)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
log4cxx中文輸出錯誤補丁
log4cxx中文輸出錯誤補丁
(金慶的專欄)
已提交Bug:https://issues.apache.org/jira/browse/LOGCXX-399
log4cxx_0.10.0及主干代碼,Windows下輸出中文,發現有多余輸出。
void main()
{
setlocale(LC_ALL, "");
LOG4CXX_INFO(pLog, "一二"); // log 2 chinese characters.
}
輸出為:一二二。
錯誤在 MbstowcsCharsetDecoder::decode().
size_t converted = mbsrtowcs(...
if (converted == (size_t) -1) {
...
} else {
stat = append(out, buf);
in.position(in.position() + converted); // ERROR!
}
mbsrtowcs()返回的是漢字的字數,而輸入緩沖區in的position是按字節計數的,
對于漢字,position應該增加2*converted,而不是converted.
因為position少增加了一半,所以后半部分字符串會重復解碼。
可如下更改:
if (converted == (size_t) -1) {
...
} else {
stat = append(out, buf);
// in.position(in.position() + converted); // ERROR!
if (src)
in.position(src - in.data());
else // mbsrtowcs() set src to NULL.
in.position(in.position() + strnlen(in.current(), in.remaining()));
}
此處的in是個二進制塊,其中可能會有0,而mbsrtowcs()的輸入應該是0結尾的字符串。
碰到0時,mbsrtowcs()認為已經成功轉換到串尾,并將src重設為NULL。
代碼中已經有對0的處理。
有可能mbsrtowcs()會越過輸入緩沖區的尾部一直讀取,最多為256字節,仍有可能出現垃圾字符。
但是現在的std::string實現有0結尾,所有才沒有出錯。若要更正這個錯誤,就需要在輸入緩沖區尾部添0。
posted on 2012-11-19 20:29
金慶
閱讀(1524)
評論(3)
編輯
收藏
引用
所屬分類:
1. C/C++
評論
#
re: log4cxx中文輸出錯誤補丁
2014-03-06 17:00
bigbad
很有幫助, 頂。
不過最后應該寫為:
in.position(in.position() + strnlen(src, in.remaining()));
否則只轉255個wchar_t
回復
更多評論
#
re: log4cxx中文輸出錯誤補丁
2014-03-06 17:37
bigbad
汗, 上面錯了。 最后更新position,應該這樣寫
if(src ==NULL)
{
in.position(in.limit());
}
else
{
in.position(in.position() + src - in.current());
}
回復
更多評論
#
re: log4cxx中文輸出錯誤補丁
2014-05-13 21:15
金慶
@bigbad
src不為空時,position到新的src處,這2種計算相同:
in.position(in.position() + src - in.current());
in.position(src - in.data());
src為空時,2種計算不相同:
in.position(in.limit());
in.position(in.position() + strnlen(in.current(), in.remaining()));
當in中間有'\0'時,in.limit()會跳過剩余的輸入串。
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
相關文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內存錯誤
std::thread 中的異常會丟失調用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標記
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
国模精品一区二区三区色天香
|
亚洲一区三区电影在线观看
|
99人久久精品视频最新地址
|
韩国v欧美v日本v亚洲v
|
一区二区三区久久精品
|
亚洲人成高清
|
久久久久九九九九
|
性欧美办公室18xxxxhd
|
欧美欧美全黄
|
欧美激情1区2区3区
|
狠狠色2019综合网
|
欧美一区二区三区在线播放
|
亚洲新中文字幕
|
欧美精品在线一区
|
亚洲大片av
|
在线免费观看欧美
|
久久久久九九九九
|
久久一区激情
|
国产一区二区高清视频
|
午夜精品久久久久久久久久久久
|
亚洲午夜激情在线
|
欧美深夜影院
|
亚洲性视频网址
|
麻豆精品视频在线观看
|
久久蜜桃精品
|
伊人久久大香线蕉综合热线
|
久久精品国产清高在天天线
|
久久综合婷婷
|
一区在线观看视频
|
老司机免费视频一区二区三区
|
亚洲一区二区欧美日韩
|
欧美精品在线观看一区二区
|
亚洲国产欧美日韩
|
一本色道精品久久一区二区三区
|
欧美激情va永久在线播放
|
亚洲电影视频在线
|
一本色道久久综合亚洲精品婷婷
|
欧美日韩国产首页
|
在线一区日本视频
|
欧美伊人久久久久久午夜久久久久
|
国产精品久久一级
|
欧美一级午夜免费电影
|
欧美h视频在线
|
亚洲精品一区二
|
国产精品v亚洲精品v日韩精品
|
亚洲制服少妇
|
老司机久久99久久精品播放免费
|
永久域名在线精品
|
欧美日本视频在线
|
午夜精品一区二区三区在线播放
|
久久综合电影
|
亚洲黄页视频免费观看
|
亚洲女同同性videoxma
|
国产精一区二区三区
|
久久国产精品久久国产精品
|
亚洲国产精品成人va在线观看
|
亚洲一本大道在线
|
韩国三级在线一区
|
欧美日韩国产二区
|
久久国产精品毛片
|
亚洲人成久久
|
欧美专区18
|
日韩视频免费在线
|
国内精品久久久久久久影视蜜臀
|
麻豆精品在线播放
|
亚洲欧美视频在线
|
亚洲国产一区二区三区a毛片
|
午夜亚洲性色视频
|
亚洲欧洲一区二区三区
|
国产女优一区
|
欧美日韩激情小视频
|
久久久精品动漫
|
亚洲视频二区
|
91久久午夜
|
你懂的网址国产 欧美
|
亚洲一区二区三区色
|
最新精品在线
|
亚洲精选一区
|
久久一日本道色综合久久
|
亚洲一区二区少妇
|
最新中文字幕一区二区三区
|
国产日韩欧美成人
|
欧美调教视频
|
欧美精品久久久久久久免费观看
|
国产精品久久久久久久久久久久久久
|
久久久久国产一区二区三区
|
中国成人亚色综合网站
|
亚洲电影在线看
|
美女视频一区免费观看
|
欧美在线播放一区二区
|
一区二区三区高清视频在线观看
|
国产有码一区二区
|
国产精品久久久久一区二区三区
|
久久综合色婷婷
|
久久久99国产精品免费
|
亚洲欧美日韩第一区
|
中文精品视频
|
亚洲视频一区二区免费在线观看
|
亚洲高清不卡在线观看
|
国产亚洲欧洲一区高清在线观看
|
国产精品青草久久久久福利99
|
欧美女主播在线
|
欧美日韩精品
|
欧美日韩免费区域视频在线观看
|
欧美成人有码
|
欧美老女人xx
|
欧美久久一级
|
欧美午夜剧场
|
国产精品天天看
|
国产日韩欧美成人
|
国产一区二区三区无遮挡
|
国产视频观看一区
|
国产亚洲一区二区精品
|
韩国一区二区三区美女美女秀
|
国产原创一区二区
|
在线观看欧美黄色
|
亚洲精品欧洲精品
|
一本综合精品
|
午夜电影亚洲
|
久久青草福利网站
|
亚洲承认在线
|
亚洲精品一区二区三区蜜桃久
|
亚洲国产日韩欧美在线动漫
|
欧美激情视频在线播放
|
欧美成人一区二区三区
|
欧美精品在线视频
|
国产精品久久久久久久午夜片
|
国产精品欧美日韩一区二区
|
国产九九视频一区二区三区
|
国产亚洲一区二区精品
|
在线一区二区三区四区
|
午夜精品一区二区三区在线视
|
久久久久久午夜
|
欧美激情麻豆
|
国产精品亚洲欧美
|
136国产福利精品导航
|
日韩视频在线一区二区三区
|
在线亚洲欧美
|
久久九九免费
|
91久久线看在观草草青青
|
在线综合欧美
|
久久噜噜噜精品国产亚洲综合
|
欧美日韩不卡视频
|
国产乱肥老妇国产一区二
|
在线观看国产精品网站
|
亚洲一级黄色av
|
久久另类ts人妖一区二区
|
91久久嫩草影院一区二区
|
午夜电影亚洲
|
欧美日韩国产高清视频
|
国产亚洲视频在线观看
|
一区二区冒白浆视频
|
久久久噜噜噜
|
国产精品99久久久久久久vr
|
久久偷看各类wc女厕嘘嘘偷窃
|
欧美日韩国产一区二区三区地区
|
国产日韩精品一区二区三区在线
|
最新国产拍偷乱拍精品
|
亚洲欧美日韩中文视频
|
欧美另类亚洲
|
亚洲高清二区
|
久久国产精品久久久久久电车
|
91久久久一线二线三线品牌
|
欧美一区二区三区精品
|
国产精品theporn
|
日韩亚洲一区二区
|
欧美暴力喷水在线
|
欧美一区视频在线
|
国产精品magnet
|
日韩午夜免费
|
欧美激情二区三区
|
久久久人成影片一区二区三区
|
国产精品色网
|
亚洲一级黄色片
|
亚洲青色在线
|
免费欧美日韩国产三级电影
|
国产亚洲欧美另类中文
|
欧美不卡一区
|
久久久青草婷婷精品综合日韩
|
亚洲免费在线电影
|
亚洲激情成人网
|
久久手机免费观看
|
一区二区在线视频播放
|
久久精品视频在线看
|
亚洲一品av免费观看
|
国产精品成人观看视频国产奇米
|
一本色道久久88综合亚洲精品ⅰ
|
欧美成人免费观看
|
久久躁日日躁aaaaxxxx
|
精品99一区二区三区
|
久久久久综合网
|
久久久久成人精品
|
一区三区视频
|
麻豆精品精品国产自在97香蕉
|
日韩午夜在线
|
亚洲精品一区二区三区福利
|
欧美日韩国产在线看
|
中文国产成人精品久久一
|
正在播放欧美一区
|
国产精品一区三区
|