当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·在线等待    »显示摘要«
    摘要: 以下程序是否正确??max,min的值是多少?? 求10个有符号数的最大和最小值 data segment var1 dw 12 , 78 , 45 ,21, 18 ,-96,-12,57,145,-14 ;此处有符号数该用什么表示,2(8,10,16);进制,计算机是否把有符号数转化为补码 max dw ? min dw ? data ends stack1 segment para s......
    摘要: 我有一篇pdf文档的中文文本复制后粘贴出来为乱码, 我在文档属性里发现该文章的原始字体是mstt31afe84946o088...,mstt3195ed4ebao100...等(总之是些不懂的~) 我想可能是由于字体不是windows可识别的宋体之类的,所以粘贴出来为乱码吧~(因为其它pdf文档都可正常复制文本) 请问高手我该怎样才能使得粘贴出来的文字不是乱码呢?????? ......


◆◇◆ ,GTK+ 编程,中文无法正常显示 ◆◇◆

 
   
  GTK+   for   Linux   下,标题中的汉字无法正常显示,控件中的汉字却正常显示...  
  GTK+   for   Win32   下就根本无法用汉字,如果标题中有汉字则无法显示,  
  其它控件,比如按钮中有汉字的话会发生如下错误:  
          "**   (:692):   WARNING   **:   Invalid   UTF8   string   passed   to   pango_layout_set_text()"  
   
  请高手指点...  
   
 

NO.1   作者: Fu7iang

 
  <<   自言自语   --   GTK+   编程[1]   --   关于中文显示   >>  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
   
  问:论坛中有人说   GTK+   并不支持中文,是这样吗?  
  问:为什么在控件上的汉字无法显示,并伴有如下错误警告?  
  问:为什么在屏幕上输出的汉字变成了乱码?  
  问:在修改控件字体的第一步就发生了错误,为什么   gdk_font_load()   总是失败?  
  问:我不想使用宋体,怎样获得其它字体的代号?  
  问:你为什么没有说到   gettext()   及相关国际化标准?  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
   
  问:  
          论坛中有人说   GTK+   并不支持中文,是这样吗?  
  -----------------------------------------------------------  
  答:  
          GTK+   采用   UTF-8   编码就是为了支持多字节文字,所以GTK+  
  肯定支持中文,而且非常出色,你可以看到网上使用   GTK+   编写  
  的中文软件数不胜数,所以没必要理会那种说法。  
          (   我真的看过这类的帖子,误人子弟...呵呵...   )  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
   
  问:  
          为什么在控件上的汉字无法显示,并伴有如下错误警告:  
  "**   (:1864):   WARNING   **:   Invalid   UTF8   string   passed   to  
  pango_layout_set_text()"  
  -----------------------------------------------------------  
  答:  
          GTK+   中的字符串均采用   UTF-8   格式编码,这个提示就是告  
  诉您,程序中的字符串编码格式不是   UTF-8,通常这是由编辑器  
  造成的,例如在我的   VC7   中,默认的存档编码格式为   GB2312。  
          但是,除了将文件以   UTF-8编码格式存档外,你还可以使用  
  glib   的转换函数在程序的运行过程中将字符串转换为   UTF-8。  
          例如:   将  
          button   =   gtk_button_new_with_label(   "确定"   );  
                        改成  
          button   =   gtk_button_new_with_label(  
                                g_locale_to_utf8("确定",4,NULL,NULL,NULL));  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
   
  问:  
          为什么在屏幕上输出的汉字变成了乱码?  
  -----------------------------------------------------------  
  答:  
          既然可以显示乱码,就表明与编码格式无关。  
          您可能已经想到了   ---   对,问题就出在字体上。  
          一般情况下,系统会用"Sans"作为默认字体,但这种字体中  
  只包含了   ASCII   码,所以汉字是无法显示的。  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
   
  问:  
          在修改控件字体的第一步就发生了错误,gdk_font_load()  
  总是失败,为什么?  
  -----------------------------------------------------------  
  答:  
          首先向您提供一些建议:  
      1.不要用   GDK   的一些函数更改字体,因为那是   GTK+的不稳定  
  因素之一(至少在2.0以下版本中是这样的)。  
      2.为了获得更多的字体,应该避免使用   GdkFont类型,及相关  
  函数,取而代之的是   Pango   库,这是   GTK+   的一部分。  
      3.GdkFont   只能使用   XFont   字体,而且使用方法相对复杂,  
  PangoFontDescription   可以使用   XFont,以及一些本地字体,  
  包括   Win   Font,   XRender   Font,   TrueType   Font,所以您没有必  
  要再留恋   GdkFont   了。  
      4.您不需要修改所有控件,更简便的方法是在主窗口创建后立  
  即修改它的字体,将来创建的控件会继承它的这项属性。  
          例如:  
          window   =   gtk_window_new(   GTK_WINDOW_TOPLEVEL   );  
          {  
                  GtkStyle     *style   =   gtk_rc_get_style(   window   );  
                  pango_font_description_set_family(  
                                                    style->font_desc,   "Stsong"   );  
                  gtk_widget_set_style(   window,   style   );  
          }  
          (   这三句代码是将程序的字体设置为   "华文宋体"   )  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
   
  问:  
          我不想使用宋体,怎样获得其它字体的代号?  
  -----------------------------------------------------------  
  答:  
          部分字体的代号和它的文件名是相同的,例如黑体的代码为  
  "Simhei",华文宋体为"Stsong"。  
          您还可以通过一些   Linux/Unix   下的编辑软件的字体选择框  
  来查找字体对应的代码。  
          但标准的方法是调用   Pango库中的相应函数来查找机器上已  
  安装的字体。  
          如果想了解更多关于   Pango的高级使用方法,请参考它自带  
  的   API   开发手册。  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
   
  问:  
          你为什么没有说到   gettext()   及相关国际化标准?  
  -----------------------------------------------------------  
  答:  
          目前国内多数程序员采用这个办法汉化程序,所以我没有必  
  要再多说。但它不一定对每个人都合适,我通常采用自己管理语  
  言模块的方法实现国际化,这在很多情况下要比   gettext()更方  
  便。  
   
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
  >   作   者:付强  
  >   兴   趣:ASM/C/C++/Java/Perl/GTK+/CGI/ISAPI/Linux   ...  
  >   Email:youlingbing@163.net  
  >     OICQ:775341  
  >--------------------------------------------------------->  
  >           这些文章其实是我的学习笔记,以   FAQ方式代问自答,希  
  >   望能帮初学者解决一点实际问题。  
  >           您可以随意修改或转载本文,但请保证内容的正确性,以  
  >   免误人子弟   ---     谢谢   :)  
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
 


 ·菜鸟问题:则样更改服务器名    »显示摘要«
    摘要: 系统是win2000 server, 现我要更改服务器名 ,应如何??? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE