Wine 中文存在很多的js中文乱码怎么解决决方法

杂项(69)
wine的乱码问题解决&&
&最近要看很多的论文,有很多是pdf的,读论文怎么也要进行标注,但是linux下面没有一个好用的pdf标注软件,因此只好借助于wine运行PDF-XChange Viewer来解决这个问题;从中国知网下载的论文同样需要用wine运行CAJViewer来解决。
我的系统的LANG=&en_US.UTF-8&是英文语言环境,会导致wine在运行的时候,出现乱码问题。
测试了一下,只有在LANG=&zh_CN.UTF-8&的时候,PDF-XChange Viewer可以输入中文,添加中文的标注,但是还是出现菜单乱码。
问题出在:
wine运行程序的时候,默认是Tahoma字体,用Tahoma是无法显示中文的。因此,需要使用中文字体,例如simsun。
1. 拷贝simsun.ttc到/usr/share/wine/fonts
&// 注意增加字体文件的可读权限
2.修改~/.wine/system.reg
搜索: FontSubstitutes
找到的行应该是:[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes]
将其中的:
“MS Shell Dlg”=”Tahoma”
“MS Shell Dlg 2″=”Tahoma”
“MS Shell Dlg”=”SimSun”
“MS Shell Dlg 2″=”SimSun”
但是这个时候,还是会出现乱码的问题,只能下手更狠一些,将tahoma.ttf和tahomabd.ttf删掉。
这样,windows程序菜单就可以正常显示了;-)
$ env LANG=&zh_CN.UTF-8& wine CAJViewer.exe
/viewarticle.php?id=96945
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:555441次
积分:7193
积分:7193
排名:第2742名
原创:133篇
转载:180篇
评论:45条
(1)(2)(1)(1)(2)(5)(6)(2)(2)(4)(1)(8)(5)(3)(1)(1)(2)(4)(5)(1)(1)(1)(1)(4)(1)(2)(3)(10)(2)(3)(3)(3)(8)(3)(7)(1)(13)(5)(9)(10)(5)(1)(8)(19)(13)(29)(10)(8)(4)(14)(3)(2)(7)(10)(6)(5)(30)新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
家境小康, 积分 1409, 距离下一级还需 591 积分
论坛徽章:0
今天升级了 wine(1.1.13),然后运行 wine 的配置程序,发现界面该是中文字的地方全是竖线,原先是正常的。
后搜索到以下解决办法,特转载此处。
解决了WINE的中文字体显示方块的问题
运行 wine regedit,打开注册表,找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes,删除所有键值(其实只要删除 MS Shell Dlg 和 MS Shell Dlg2 即可)。
主要原因为 tahoma 字体在 Linux 下无法显示中文。
不知是哪位大侠的手笔,成功解决,还指出关键点,非常感谢!
进一步,顺着这个思路,既然是 tahoma 字体无法显示中文,那就改用一种在 linux 下可以显示中文的字体去替代 tahoma 及 tahomabd 字体,于是保留那两个键,将键值都改成:“wqy-zenhei”,就是用文泉驿中文字体,可行!
本文来自ChinaUnix博客,如果查看原文请点:
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp中文乱码原因和解决方案
中文乱码原因和解决方案
尚未学到jsp部分,解决方案是否可行需要您自己测试
(以下内容根据搜狐圈子-程序人生的《java中文乱码解决》和祥龙之子博文《Java 中文乱码问题》整理)
java内核和class文件是基于unicode码的,这使Java程序具有良好的跨平台性,但也导致在Java和JSP文件在编译时以及Java程序与其他媒介交互时等
情况下产生中文乱码成为可能。编码方式的不一致,是造成中文乱码的根本原因,解决这一问题当然也得以此为出发点。下面介绍一下几个出现中文乱
码的常见情况以及解决方法。
一、编译时产生中文乱码
在默认情况下,Java保存源文件采用操作系统默认编码格式,用JDK编译时若指定encoding参数,JDK就把源代码从file.encoding编码格式转化为
unicode格式然后编译成.class文件
若源文件中包含中文,使用不一致的编码方式编译成class文件过程中就会出现乱码。
jsp源程序编译过程有所不同。Web容器调用JSP编译器,该编译器先查看JSP文件的文件编码设置。若没有设置,则调用JDK调用JDK把JSOP文件用JVM默
认的字符编码(即Web窗口所在的操作系统默认的file.encoding)转化为临时Servlet类。然后,再把它编译成UNICODE格式的class类。最后,编译成
临时保存的Servlet类来响应客户端的请求。
我们可以使用下面的代码查看系统的file.encoding参数:
public class ShowSystemDefaultEncoding {
public static void main(String[] args) {
String encoding = System.getProperty("file.encoding");
System.out.println(encoding);
这种情况下可以通过下面的方法解决乱码问题:
1、java或JSP源文件中尽量不要写中文(注释部分不参与编译,不在此列)。
2、若源文件中必须写中文,java源文件尽量手动带参数-ecoding GBK或-ecoding gb231编译;
对于JSP,在文件头加上语句:&%@ page
contentType="text/charset=GBK"%&或&%@
page contentType="text/charset=gb2312"%&,
这样基本上就通解决java和JSP编译成class文件编译乱码问题。
二、与其他存储媒介交互时产生中文乱码
Web页、数据库、文件、流等存储媒介的存储方式都是基于字节流的,Java程序与这些媒介交互时就会发生字符(char)与字符(byte)之间的转换,如果
在此转换过程中使用的编码方式与字节原有的编码不一致,很可能会出现乱码。
1、JSP与页面参数之间的乱码
在默认情况下,JSP采用系统编码获取页面参数,若页面参数编码类型与系统编码不一致,就可能出现乱码。
解决方法一:在每个文件里都添加语句,强制使用指定编码。
(1) 在每个页面开始处,加入语句:
&%@ page language="java" contentType="text/
charset=UTF-8" pageEncoding="UTF-8"%&或
&%@ page language="java" contentType="text/
charset=GB2312" pageEncoding="GBK"%&
其中:pageEncoding是jsp文件本身的编码;contentType的charset是指服务器发送给客户端的内容编码,两者不一定相同。
JSP要经过两次“编码”:
第一阶段,根据pageEncoding设定的编码方式读取jsp,并编译成统一的UTF-8编码的java源码(即.java)。如果pageEncoding设定错误或者没有设定,
出来的可能就是中文乱码。
第二阶段,是由javac的java源码至java
byteCode的编译,不论用何编码编写的JSP经过这个阶段都会是UTF-8的encoding的java源码。
第三阶段,由Tomcat出来的网页,用的是contentType。Tomcat是支持jsp/servlet的开源免费的WEB服务器。
附:非jsp页面避免中文乱码:
&meta http-equiv="Content-Type" content="text/
charset=utf-8" /&
其中:charset=UTF-8,是指定JSP向客户端输出的编码方式为“UTF-8”
pageEncoding="UTF-8",是让JSP引擎能正确地解码含有中文字符的JSP页面,这在LINUX中很有效。
meta 标签用于网页的<head>与</head>中,meta 标签的用处很多。meta
的属性有两种:name和http-equiv。
name属性主要用于描述网页,http-equiv="Content-Type",用以说明主页制作所使用的文字以及语言。
(2) 对于使用了中文编码的请求,可以在页面获取参数之间,强制指定request获取参数的编码方式:
request.setCharacterEncoding("UTF-8")%&
(3)如果在JSP将变量输出到页面时出现了乱码,可以通过以下设置解决:
response.setContentType("text/charset=UTF-8")
(4)对于页面个别中文乱码可以通过下面语句转换:
str=new String(str.getBytes("ISO-8859-1"),"页面编码方式")
JAVA在网络传输中使用的编*是"ISO-8859-1",故在输出时需要进行转化,格式:
String str=new String(str.getBytes("开发环境编码"),"ISO-8859-1");
String str= "中文";
str=new String(str.getBytes("GB2312"),"8859_1");
(5)链接传参乱码
在传参的jsp对中文进行编码:href="new.jsp?name=java.net.URLEncoder.encode("链接")";
在接受的jsp对中文进行转码:String str =
URLDecoder.decode(request.getParameter("name "), "utf-8");
解决方法二:使用servlet规范中的过滤器指定编码。过滤器在web.xml中的典型配置和主要代码如下:
&filter-name&CharacterEncodingFilter&/filter-name&
&filter-class&net.vschool.web.CharacterEncodingFilter&/filter-class&
&init-param&
&param-name&encoding&/param-name&
&param-value&GBK&/param-value&
&/init-param&
&filter-mapping&
&filter-name&CharacterEncodingFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
CharacterEncodingFilter.java:
public class CharacterEncodingFilter implements Filter
protected String encoding =
public void init(FilterConfig filterConfig) throws
ServletException
this.encoding = filterConfig.getInitParameter("encoding");
public void doFilter(ServletRequest request, ServletResponse
response, FilterChain chain) throws IOException,
ServletException
request.setCharacterEncoding(encoding);
response.setContentType("text/charset="+encoding);
chain.doFilter(request, response);
2、Java与数据库之间的乱码
大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据
库驱动自动支持unicode,如Microsoft的SQLServer驱动。
其他大部分数据库驱动,可以在驱动的url参数中指定,如mysql驱动:jdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding=GBK。
一介简单方法是:在“控制面板”中把“区域”设置为“英语(美国)”,假如还出现乱码,可进行如下设置:
取中文时:str= new String(str.getBytes("GB2312"));
向DB中输入中文:str=new String(str.getBytes("ISO-8859-1"));
3、Java与文件/流之间的乱码
Java读写文件最常用的类是
FileInputStream/FileOutputStream和FileReader/FileWriter。其中FileInputStream
和FileOutputStream是基于字节流的,常用于读写二进制文件。读写字符文件建议使用基于字符的FileReader和
FileWriter,省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现乱码
在这种情况下,建议使用FileReader和FileWriter的父类:
InputStreamReader/OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型:
InputStreamReader(InputStream in, Charset cs)
和OutputStreamWriter
(OutputStream out, Charset cs)。
上面提到的方法应该能解决大部分乱码问题,如果在
其他地方还出现乱码,可能需要手动修改代码。解决Java乱码问题的关键在于在字节与字符的转换过程中,你必须知道原来字节或转换后的字节的编码
换时采用的编码必须与这个编码方式保持一致。我们以前使用Resin服务器,使用smartUpload组件上传文件,上传文件同时传递的中文参数获取没
有乱码问题。当在Linux中把Resin设置成服务后,上传文件同时的中文参数获取出现了乱码。这个问题困扰了我们很久,后来我们分析
smartUpload组件的源文件,因为文件上传采用的是字节流的方式,里面包含的参数名称和值也是字节流的方式传递的。smartUpload组件读
取字节流后再将参数名称和值从字节流中解析出来,问题就出现在smartUpload将字节流转换成字符串时采用了系统默认的编码,而将Resin设置成
服务后,系统默认的编码可能发生了改变,因此出现了乱码。后来,我们更改了smartUpload的源文件,增加了一个属性charset和
setCharset(String)方法,将upload()方法中提取参数语句:
String value = new String(m_binArray, m_startData, (m_endData -
m_startData) + 1 );
String value = new String(m_binArray, m_startData, (m_endData -
m_startData) + 1, charset );
终于解决了这个乱码问题。
由于java的跨平台特性,使得字符集问题必须由具体系统来统一解决,所以在一个java应用系统中,解决中文乱码的根本办法是明确指定整个应用系统
统一字符集。
常用的字符集主要有ISO8859_1、GBK和UTF-8。GBK和ISO8859_1各自只能在相应的操作系统上运行,这样破坏了java跨平台运行的优越性。西方软件默
认的字符集是ISO8859_1,包括操作系统Linux和数据库MySQL。
UTF-8编码是一种兼容所有语言的编码方式,使用该编码是一种解决中文乱码比较好的方法,但是需要找到应用系统的所有出入口,然后使用UTF-8过滤
,解决方案如下:
(1) 开发和编译代码时指定字符集为UTF-8,JBuilder和Eclipse都可以在项目属性中设置。
使用过滤器。如果使用JAVA处理WEB请求的一种机制servlet,那么使用Servlet的filter语句,将所有来自浏览器的请求转换为UTF-8(请求包根据
浏览器所在操作系统编码,可能是各种形式编码)。
关键语句:request.setCharacterEncoding("UTF-8")。
(3) 需要配置Web.xml激活Filter。
(4) 在JSP的html代码头部声明使用UTF-8:
(5)设定数据库连接方式是UTF-8。例如连接MYSQL时配置URL可设置为:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
一般数据库都可以通过管理设置设定UTF-8。
(5) 其他和外界交互时能够设定编码时就设定UTF-8。如读取文件,操作XML等。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博客访问: 721447
博文数量: 140
博客积分: 950
博客等级: 准尉
技术积分: 1747
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
发布时间: 19:25:34
转自: ubuntu下wine中文乱码解决(彻底篇)&&& wine中文乱码的解决方法 新装的wine中文全是乱码,需要修改一下几个配置文件,找到一篇比较详细的配置说明,分享一下:“ wine下中文的配置方案步骤: 1. 初始设置运行 winecfg,把模拟的 Windows 系统设置为 Windows XP 或者 Windows 2000。2. 准备.........
阅读(1580) | 评论(0) | 转发(1)
发布时间: 14:25:45
阅读(1381) | 评论(2) | 转发(0)
发布时间: 10:01:15
阅读(3064) | 评论(0) | 转发(2)
发布时间: 12:06:00
阅读(906) | 评论(0) | 转发(0)
发布时间: 18:09:10
switch_to_workspace shortcurt xml gconf
&This key is not writeable&......
阅读(1000) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
请登录后留言。(window.slotbydup=window.slotbydup || []).push({
id: '3284507',
container: s,
size: '0,0',
display: 'inlay-fix'
wine乱码完全解决方案
介绍了linux下二进制文件的安装--使用wine的文章,当时使用的也都是英文软件,没有注意到wine在中文支持上的缺陷,这不,好家伙,装了个福昕阅读器,满世界都是乱码,walfred网上找了好些资料才把问题给解决了,这边记载下解决方案。按照步骤来就能彻底解决问题。
乱码未解决前
1. 初始设置
运行 winecfg,把模拟的 Windows 系统设置为 Windows XP。
2. 准备字体
为了让 Windows 应用程序看上去更美观,所以需要 Windows 下面的字体。请下载或者复制windows下的字体simsun.ttc(新宋体)。点此下载simsun.ttc。
由于我已经将 simsun.ttc 复制到 /usr/share/fonts/windows/ 目录中了(么有windows目录的请自行创建)。所以我只需要在 ~/.wine/drive_c/windows/fonts/(么有fonts目录的请自行创建) 目录中为 simsun.ttc 创建一个符号连接:
cd ~/.wine/drive_c/windows/fonts
ln -s /usr/share/fonts/windows/simsun.ttc simsun.ttc
ln -s /usr/share/fonts/windows/simsun.ttc simfang.ttc
这边创建一个 simfang.ttc 是许多 Windows 应用默认使用 simfang.ttc 字体。
3. 修改 ~/.wine/system.reg
装好字体后,还要修改一下 Wine 的注册表设置,指定与字体相关的设置:
vim ~/.wine/system.reg
(网上说一定要使用 gedit 或其他支持 gb2312/utf8 编码的编辑器修改这些文件,否则文件中的中文可能变乱码,我暂时还没有用到不支持gb2312/utf8编码的编辑器呢,呵呵)
在命令模式下搜索: LogPixels
找到的行应该是:[System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts]
将其中的:
&LogPixels&=dword:00000060
&LogPixels&=dword:00000070
同样在命令模式搜索: FontSubstitutes
找到的行应该是:[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes]
将其中的:
&MS Shell Dlg&=&Tahoma&
&MS Shell Dlg 2&P=&Tahoma&
&MS Shell Dlg&=&SimSun&
&MS Shell Dlg 2&P=&SimSun&
保存退出。
4. 修改 ~/.wine/drive_c/windows/win.ini
vim ~/.wine/drive_c/windows/win.ini
在文件末尾加入:
menufontsize=13
messagefontsize=13
statusfontsize=13
IconTitleSize=13
5. 最关键的一步,把下面的代码保存为zh.reg,至于位置就放在.wine下,因为这是配置wine的注册文件嘛,然后在当前目录终端执行regedit zh.reg。从Windows目录下的Fonts里的simsun.ttc复制到/home/user/.wine/drive_c/windows/fonts里面。
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
&Arial&=&simsun&
&Arial CE,238&=&simsun&
&Arial CYR,204&=&simsun&
&Arial Greek,161&=&simsun&
&Arial TUR,162&=&simsun&
&Courier New&=&simsun&
&Courier New CE,238&=&simsun&
&Courier New CYR,204&=&simsun&
&Courier New Greek,161&=&simsun&
&Courier New TUR,162&=&simsun&
&FixedSys&=&simsun&
&Helv&=&simsun&
&Helvetica&=&simsun&
&MS Sans Serif&=&simsun&
&MS Shell Dlg&=&simsun&
&MS Shell Dlg 2&=&simsun&
&System&=&simsun&
&Tahoma&=&simsun&
&Times&=&simsun&
&Times New Roman CE,238&=&simsun&
&Times New Roman CYR,204&=&simsun&
&Times New Roman Greek,161&=&simsun&
&Times New Roman TUR,162&=&simsun&
&Tms Rmn&=&simsun&
下图是乱码解决后的截图:
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------}

我要回帖

更多关于 cmd中文乱码解决方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信