windows项目导入到ubuntu系统下出现中文乱码的原因和解决方法

本文介绍了解决在Ubuntu系统中使用GBK编码的问题,通过修改系统配置使Ubuntu支持GBK编码,并详细介绍了如何在Eclipse中设置正确的编码方式。

此解决问题的方法我已经亲自使用过了,很好的决绝了问题 希望对大家有也一定的帮助。

原因:

           把Windows下的工程导入到了Linux下Eclipse中,由于以前的工程代码,都是GBK编码的(Windows下的Eclipse 默认会去读取系统的编码,所以  Widnwos下的Eclipse的编码为GBK),而Ubuntu默认是不支持GBK编码的。所以,首先我们要先让 Ubuntu支持GBK。


方法如下:


  1. 首先要修改/var/lib/locales/supported.d这个文件夹的权限,否则不能修改该文件夹下的local文件,使用如下命令 sudo chmod -R 777 /var/lib/locales/supported.d
  2. 修改/var/lib/locales/supported.d/local文件,在文件中添加
    zh_CN.GBK GBK
    zh_CN.GB2312 GB2312    
  3. sudo dpkg-reconfigure --force locales
    然后在输出的结果中会出现
    zh_CN.GB2312 done
    zh_CN.GBK done如下所示:

这样, Ubuntu就支持GBK编码了, 下面开始设置eclipse,
首先选择eclipse菜单栏中的Windows->Preferences, 然后选择General下面的Workspace, Text file encoding下选择Other GBK,如果没有GBK的选项, 没关系, 直接输入GBK三个字母, Apply, GBK编码的中文, 已经不是乱码了。

下面送上Ubuntu操作过程中的一些截图:

Ubuntu下Eclipse中文乱码解决 Ubuntu下Eclipse中文乱码解决 Ubuntu下Eclipse中文乱码解决 linux

文章转载自:http://www.linuxidc.com/Linux/2011-12/50056.htm

<think> 由于用户的问题解决matplotlib绘图时汉字乱码问题,我们需要考虑中文字体显示的支持。 在matplotlib中,默认的字体通常不支持中文,因此我们需要手动设置支持中文的字体。 常见的解决方案有: 1. 使用系统内置的中文字体(如SimHei, Microsoft YaHei, KaiTi等) 2. 通过指定字体文件路径来设置 另外,我们还需要注意,在某些环境下(比如Jupyter Notebook或Python脚本),设置方式可能略有不同。 根据引用[2]引用[3]的内容,用户已经安装了matplotlib以及相关的库,并且可能在使用中遇到了中文乱码问题。 我们将提供两种常用的解决方法方法一:在代码中直接设置matplotlib的字体 方法二:修改matplotlib的配置文件(适用于需要全局设置的情况) 由于用户提供了代码中使用了多个库,但问题集中在matplotlib,我们将重点解决matplotlib的中文显示。 此外,有时除了设置字体,还需要设置字符,以确保负号等其他特殊字符正常显示。 下面给出两种方法的示例代码: 方法一:在绘图前通过代码设置(推荐,因为不会影响全局环境,并且便于代码迁移) 步骤: 1. 导入matplotlib.pyplot 2. 设置中文字体,例如'SimHei'(黑体)或其他可用中文字体 3. 设置字符,例如解决负号显示问题 注意:如果系统中没有对应的字体,可能需要先安装字体。对于Windows系统,一般有SimHei等字体;对于Linux系统,可能需要额外安装中文字体。 方法二:修改配置文件(如果希望全局生效,可以修改配置文件,但不推荐,因为不同项目可能需要不同配置) 我们将主要使用方法一,并在代码中添加注释说明。 用户提到代码中使用了pandas, numpy, sklearn, matplotlib, openpyxl,因此我们将在绘图代码前进行设置。 示例代码: ```python import matplotlib.pyplot as plt # 设置中文字体,例如SimHei(黑体),FangSong(仿宋),KaiTi(楷体)等 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 # 设置字符,用来正常显示负号 plt.rcParams['axes.unicode_minus'] = False # 或者另一种设置方式(使用字体管理器,更灵活) # from matplotlib.font_manager import FontProperties # myfont = FontProperties(fname='/path/to/your/font.ttf') # 如果系统没有内置字体,可以指定字体文件路径 # 然后在绘图函数中指定字体:例如 plt.title('标题', fontproperties=myfont) # 其余代码... ``` 注意:如果第一种方法(使用plt.rcParams设置)不起作用,可能是因为字体名称不正确,或者系统中没有该字体。此时可以尝试第二种方式(指定字体文件路径)或者查看系统可用的中文字体。 另外,在Linux系统中,可能需要先安装中文字体。例如,对于Ubuntu,可以安装`fonts-wqy-microhei`(文泉驿微米黑)等。 由于用户没有提供具体的操作系统,我们假设是Windows,所以使用内置的字体名称(如SimHei)即可。 下面我们提供一个完整的示例,展示如何在一个包含pandas、numpymatplotlib的绘图代码中设置中文字体: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt # 设置中文字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体 plt.rcParams['axes.unicode_minus'] = False # 正确显示负号 # 创建一个示例数据 data = pd.DataFrame({ '年份': [2015, 2016, 2017, 2018, 2019, 2020], '销售额': [100, 150, 300, 250, 400, 350] }) # 绘制折线图 plt.figure(figsize=(10, 6)) plt.plot(data['年份'], data['销售额'], marker='o', linestyle='-') plt.title('年度销售额变化') # 中文标题 plt.xlabel('年份') # x轴标签 plt.ylabel('销售额(万元)') # y轴标签 plt.grid(True) plt.show() ``` 如果上述方法仍然不能解决乱码问题,可以尝试以下步骤: 1. 确认系统中是否存在中文字体(如SimHei)。在Windows系统中,可以通过“控制面板”->“字体”查看。 2. 如果字体不存在,则需要安装中文字体。可以从网上下载,然后复制到系统的字体目录(C:\Windows\Fonts),然后重启Python环境。 3. 或者,使用绝对路径指定字体文件(适用于自定义字体或跨平台): ```python from matplotlib.font_manager import FontProperties # 指定字体文件路径,例如使用微软雅黑 myfont = FontProperties(fname=r'C:\Windows\Fonts\msyh.ttc') # 根据实际路径调整 # 然后在绘图中使用 plt.title('标题', fontproperties=myfont) plt.xlabel('x轴', fontproperties=myfont) # ... 以此类推 ``` 由于用户使用了Seaborn(引用[3]中提到),如果同时使用Seaborn,请注意Seaborn会覆盖matplotlib的部分样式设置。因此,建议在设置中文字体后再设置Seaborn样式,或者使用Seaborn的set方法时指定中文字体。 例如,在使用Seaborn时也可以设置上下文(context)样式(style),但字体设置最好放在Seaborn设置之后,因为Seaborn会重置rcParams。 因此,在Seaborn使用场景下,可以这样: ```python import seaborn as sns import matplotlib.pyplot as plt sns.set_style("whitegrid") # 设置中文字体,放在seaborn设置之后,因为seaborn的设置会覆盖rcParams plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False ``` 综上所述,我们推荐在导入库之后,进行绘图之前,设置中文字体,并注意设置的顺序。 最后,我们生成相关问题: </think> 要解决 Python matplotlib 绘图中的汉字乱码问题,主要原因系统缺少中文字体支持或未正确配置字体设置。以下是完整的解决方案: ### 解决方案(使用 SimHei 黑体) ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # === 核心解决方案 === # 方法1:设置全局字体(推荐) plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示异常 # 方法2:局部设置字体(适合多字体环境) # myfont = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf') # === 示例代码 === # 创建测试数据 data = pd.DataFrame({ '产品': ['手机', '电脑', '平板', '耳机'], '销量': [120, 85, 65, 110] }) # 绘图 plt.figure(figsize=(10, 6)) plt.bar(data['产品'], data['销量'], color='skyblue') plt.title('电子产品季度销量', fontsize=16) # 中文标题 plt.xlabel('产品类别', fontsize=12) plt.ylabel('销量(万台)', fontsize=12) plt.grid(axis='y', linestyle='--', alpha=0.7) # 方法2需在文本参数中添加: fontproperties=myfont plt.savefig('sales_report.png', dpi=300, bbox_inches='tight') # 保存图片 plt.show() ``` ### 关键技术说明 1. **字体选择原理**: - Windows 系统自带 `SimHei`(黑体)是可靠的中文字体 - `axes.unicode_minus=False` 修复负号显示为方块的问题[^1] 2. **跨平台解决方案**: ```python # macOS/Linux 使用苹方字体 plt.rcParams['font.sans-serif'] = ['PingFang HK'] # 通用方案(需安装字体) !pip install fonttools from matplotlib import font_manager font_manager.fontManager.addfont('SimHei.ttf') ``` 3. **Seaborn 专用设置**: ```python import seaborn as sns sns.set(font='SimHei') # Seaborn封装方案[^3] ``` ### 常见问题排查 | 现象 | 解决方案 | |------|----------| | 方块乱码 | 确认 `import matplotlib` 后立即设置字体 | | 部分文本缺失 | 检查字体文件路径:`print(plt.rcParams['font.sans-serif'])` | | 负号异常 | 确保设置 `axes.unicode_minus=False` | | Linux环境异常 | 安装中文字体:`sudo apt-get install fonts-wqy-microhei` | > 提示:使用 `matplotlib.font_manager.findfont('SimHei')` 可验证字体是否生效[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值