ha shao �g�D�G
> 
> Could you take a look at my proposal? Or maybe test it for
> BIG5 codes. If you think it is good or have better ideas, I will
> tell Vald. Otherwise, I will throw it into garbage can.
> 
> Save ascii char in \'hh will bloat any English files 4 times
> bigger.

Hello, Vlad,
please consider to add this patch suggested by hashao,
that save ascii char in its original form instead of \'hh.
I have tested it in Big5 locale, but not zh_CN.GB2312,
it seems no problem.
I only changed hashao's code
if (mbbuf[0] > 0x007f)
to
if (mbbuf[0] & 0x80)
since *mbbuf is char, which never greater than 0x007f.

This patch should be applied after your p4 patch.


-- 
   ~     Chih-Wei Huang (cwhuang)
  'v'    E-Mail       : [EMAIL PROTECTED]
 // \\   CLDP Project : http://www.linux.org.tw/CLDP/ (Coordinator)
/(   )\  CLE  Project : http://cle.linux.org.tw/CLE/  (Developer)
 ^`~'^   HomePage     : http://www.cwhuang.idv.tw/
--- src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp.bak        Sat Nov 11 23:04:00 
2000
+++ src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp    Sat Nov 11 23:09:51 2000
@@ -196,11 +196,19 @@
                        {
                                /*FIXME: can it happen that wctomb will fail under CJK 
locales? */
                                m_wctomb.wctomb_or_fallback(mbbuf,mblen,*pData++);
-                               for(int i=0;i<mblen;++i) {
-                                       /* unfortunately all english letters will be 
output as \'hh too. */
-                                       unsigned char c = mbbuf[i];
+                               if (mbbuf[0] & 0x80)
+                               {
                                        FlushBuffer();
-                                       m_pie->_rtf_nonascii_hex2(c);
+                                       for(int i=0;i<mblen;++i) {
+                                               unsigned char c = mbbuf[i];
+                                               m_pie->_rtf_nonascii_hex2(c);
+                                       }
+                               }
+                               else
+                               {
+                                       for(int i=0;i<mblen;++i) {
+                                               *pBuf++ = mbbuf[i];
+                                       }
                                }
                        } else if (!m_pie->m_atticFormat) 
                        {

Reply via email to