liunx下的哪些php验证码乱码字体不会乱码

ACTIVITI在LINUX下查看流程图片中文字体出现乱码的解决方案
我的图书馆
ACTIVITI在LINUX下查看流程图片中文字体出现乱码的解决方案
& &问题产生:我配置在linux上的tomcat服务器生成图片时中文,出现很多小方框,不能正常显示。
问题解决过程:通过网络上搜索资料,发现是因为linux上jre对中文支持的问题。后来发现这篇小文章:
----------------------------------------------------------------------------------------------
JDK 6 for linux的中文问题
在linux下做java开发已经好几年了,经历了jdk1.4 -& 6.0。看着java在linux下的中文问题已经在慢慢改善。到6.0不做任配置都已经能正常运行很多中文程序,但可惜还是会有些中文问题。例如运行 jedit, netbeans等程序。甚至是自己写的hello world swing程序的系统菜单都是乱码的。
但解决方法很简单,在JRE 5以上的java环境中,java会自动加载$JAVA_HOME/jre/lib/fonts/fallback目录下的字体。链接或复制宋体或微软雅黑等字体到该目录即可解决。
但官方文档上说此法只适用于swing程序,要让awt程序也支持中文,还要自己设字体配置文件。由于我很少会用到awt程序,也就懒得去改了,有需要的朋友请参考Font Configuration Files
进行操作:
在Windows XP的字体目录下,找到simsun.ttc的字体文件,重命名为simsun.ttf,然后将该文件复制到linux的/usr/local/jdk/jre/lib/fonts/fallback/(这个fallback目录如果不存在则先创建这个目录)下面,因为 simsun.ttf 字体文件对应的是宋体,则在程序中使用的时候设置字体为“宋体”,修改fonts.dir为以下内容。
LucidaBrightRegular.ttf&-b&h-lucidabright-medium-r-normal--
LucidaBrightItalic.ttf&-b&h-lucidabright-medium-i-normal--
LucidaBrightDemiBold.ttf&-b&h-lucidabright-demibold-r-normal--
LucidaBrightDemiItalic.ttf&-b&h-lucidabright-demibold-i-normal--
LucidaSansRegular.ttf&-b&h-lucidasans-medium-r-normal-sans-
LucidaSansDemiBold.ttf&-b&h-lucidasans-bold-r-normal-sans-
LucidaTypewriterRegular.ttf&-b&h-lucidatypewriter-medium-r-normal-sans-
LucidaTypewriterBold.ttf&-b&h-lucidatypewriter-bold-r-normal-sans-
LucidaBrightRegular.ttf&-b&h-lucidabright-medium-r-normal--
LucidaBrightItalic.ttf&-b&h-lucidabright-medium-i-normal--
LucidaBrightDemiBold.ttf&-b&h-lucidabright-demibold-r-normal--
LucidaBrightDemiItalic.ttf&-b&h-lucidabright-demibold-i-normal--
LucidaSansRegular.ttf&-b&h-lucidasans-medium-r-normal-sans-
LucidaSansDemiBold.ttf&-b&h-lucidasans-bold-r-normal-sans-
LucidaTypewriterRegular.ttf&-b&h-lucidatypewriter-medium-r-normal-sans-
LucidaTypewriterBold.ttf&-b&h-lucidatypewriter-bold-r-normal-sans-
LucidaBrightRegular.ttf&-b&h-lucidabright-medium-r-normal--
LucidaBrightItalic.ttf&-b&h-lucidabright-medium-i-normal--
LucidaBrightDemiBold.ttf&-b&h-lucidabright-demibold-r-normal--
LucidaBrightDemiItalic.ttf&-b&h-lucidabright-demibold-i-normal--
LucidaSansRegular.ttf&-b&h-lucidasans-medium-r-normal-sans-
LucidaSansDemiBold.ttf&-b&h-lucidasans-bold-r-normal-sans-
LucidaTypewriterRegular.ttf&-b&h-lucidatypewriter-medium-r-normal-sans-
LucidaTypewriterBold.ttf&-b&h-lucidatypewriter-bold-r-normal-sans-
LucidaBrightRegular.ttf&-b&h-lucidabright-medium-r-normal--
LucidaBrightItalic.ttf&-b&h-lucidabright-medium-i-normal--
LucidaBrightDemiBold.ttf&-b&h-lucidabright-demibold-r-normal--
LucidaBrightDemiItalic.ttf&-b&h-lucidabright-demibold-i-normal--
LucidaSansRegular.ttf&-b&h-lucidasans-medium-r-normal-sans-
LucidaSansDemiBold.ttf&-b&h-lucidasans-bold-r-normal-sans-
LucidaTypewriterRegular.ttf&-b&h-lucidatypewriter-medium-r-normal-sans-
LucidaTypewriterBold.ttf&-b&h-lucidatypewriter-bold-r-normal-sans-
LucidaBrightRegular.ttf&-b&h-lucidabright-medium-r-normal--
LucidaBrightItalic.ttf&-b&h-lucidabright-medium-i-normal--
LucidaBrightDemiBold.ttf&-b&h-lucidabright-demibold-r-normal--
LucidaBrightDemiItalic.ttf&-b&h-lucidabright-demibold-i-normal--
LucidaSansRegular.ttf&-b&h-lucidasans-medium-r-normal-sans-
LucidaSansDemiBold.ttf&-b&h-lucidasans-bold-r-normal-sans-
LucidaTypewriterRegular.ttf&-b&h-lucidatypewriter-medium-r-normal-sans-
LucidaTypewriterBold.ttf&-b&h-lucidatypewriter-bold-r-normal-sans-
LucidaBrightRegular.ttf&-b&h-lucidabright-medium-r-normal--
LucidaBrightItalic.ttf&-b&h-lucidabright-medium-i-normal--
LucidaBrightDemiBold.ttf&-b&h-lucidabright-demibold-r-normal--
LucidaBrightDemiItalic.ttf&-b&h-lucidabright-demibold-i-normal--
LucidaSansRegular.ttf&-b&h-lucidasans-medium-r-normal-sans-
LucidaSansDemiBold.ttf&-b&h-lucidasans-bold-r-normal-sans-
LucidaTypewriterRegular.ttf&-b&h-lucidatypewriter-medium-r-normal-sans-
LucidaTypewriterBold.ttf&-b&h-lucidatypewriter-bold-r-normal-sans-
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
-cns11643-
:simsun.ttf&-misc-NSimSun-medium-r-normal--
-cns11643-
:simsun.ttf&-misc-NSimSun-medium-r-normal--
-cns11643-
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
-ibm-cp850
:simsun.ttf&-misc-NSimSun-medium-r-normal--
-iso10646-
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-NSimSun-medium-r-normal--
:simsun.ttf&-misc-SimSun_PUA-medium-r-normal--
-iso10646-
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
-cns11643-
simsun.ttf&-misc-SimSun-medium-r-normal--
-cns11643-
simsun.ttf&-misc-SimSun-medium-r-normal--
-cns11643-
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
-ibm-cp850
simsun.ttf&-misc-SimSun-medium-r-normal--
-iso10646-
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
simsun.ttf&-misc-SimSun-medium-r-normal--
重新启动tomcat服务,运行程序,中文正确显示。该问题解决。&
TA的最新馆藏
喜欢该文的人也喜欢php 验证码linux下只显示画布,不显示验证码的终极解决方法
经测试通过,首先放出我的代码
[php]& &?php&
session_start();&
/**去掉boom就是utf-8
* vCode(m,n,x,y) m个数字 显示大小为n 边宽x 边高y
* http://blog.qita.in
* 自己改写记录session $code
vCode(4, 12); //4个数字,显示大小为15&&
function vCode($num = 4, $size = 20, $width = 0, $height = 0) {&
!$width && $width = $num * $size * 4 / 5 + 5;&
!$height && $height = $size + 10;&
// 去掉了 0 1 O l 等&&
$str = &abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW&;&
$code = '';&
for ($i = 0; $i & $ $i++) {&
$code .= $str[mt_rand(0, strlen($str)-1)];&
// 画图像&&
$im = imagecreatetruecolor($width, $height);&
// 定义要用到的颜色&&
$back_color = imagecolorallocate($im, 235, 236, 237);&
$boer_color = imagecolorallocate($im, 118, 151, 199);&
$text_color = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));&
// 画背景&&
imagefilledrectangle($im, 0, 0, $width, $height, $back_color);&
// 画边框&&
imagerectangle($im, 0, 0, $width-1, $height-1, $boer_color);&
// 画干扰线&&
for($i = 0;$i & 5;$i++) {&
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));&
imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360), mt_rand(0, 360), $font_color);&
// 画干扰点&&
for($i = 0;$i & 50;$i++) {&
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));&
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);&
// 画验证码
转载请保留出处谢谢,不会影响您的代码执行速度如不会请资讯若水印象网络&&
//@imagefttext($im, $size , 0, 5, $size + 3, $text_color, 'c:\\WINDOWS\\Fonts\\simsun.ttc', $code);&&
//上边的是windows下试用的下边是LINUX下试用的,需要对应把字体上传上去&&
@imagefttext($im, $size , 0, 5, $size + 3, $text_color, '../msyh.ttf', $code);&
$_SESSION[&VerifyCode&]=strtolower($code); //转换成小写&&
header(&Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate&);&
header(&Content-type: image/charset=utf-8&);&
imagepng($im);&
imagedestroy($im);&
session_start();
/**去掉boom就是utf-8
* vCode(m,n,x,y) m个数字 显示大小为n 边宽x 边高y
* http://blog.qita.in
* 自己改写记录session $code
vCode(4, 12); //4个数字,显示大小为15
function vCode($num = 4, $size = 20, $width = 0, $height = 0) {
!$width && $width = $num * $size * 4 / 5 + 5;
!$height && $height = $size + 10;
// 去掉了 0 1 O l 等
$str = &abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW&;
$code = '';
for ($i = 0; $i & $ $i++) {
$code .= $str[mt_rand(0, strlen($str)-1)];
$im = imagecreatetruecolor($width, $height);
// 定义要用到的颜色
$back_color = imagecolorallocate($im, 235, 236, 237);
$boer_color = imagecolorallocate($im, 118, 151, 199);
$text_color = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));
imagefilledrectangle($im, 0, 0, $width, $height, $back_color);
imagerectangle($im, 0, 0, $width-1, $height-1, $boer_color);
// 画干扰线
for($i = 0;$i & 5;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360), mt_rand(0, 360), $font_color);
// 画干扰点
for($i = 0;$i & 50;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);
// 画验证码
转载请保留出处谢谢,不会影响您的代码执行速度如不会请资讯若水印象网络站长
//@imagefttext($im, $size , 0, 5, $size + 3, $text_color, 'c:\\WINDOWS\\Fonts\\simsun.ttc', $code);
//上边的是windows下试用的下边是LINUX系统下试用的,需要对应把字体上传上去
@imagefttext($im, $size , 0, 5, $size + 3, $text_color, '../msyh.ttf', $code);
$_SESSION[&VerifyCode&]=strtolower($code); //转换成小写
header(&Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate&);
header(&Content-type: image/charset=utf-8&);
imagepng($im);
imagedestroy($im);
复制下载后注意41和43行,如果服务器是windows那么请把43行注释掉,保留41行,linux则反过来
linux下注意下要把对应的字体放到上级目录里,如我用的是微软雅黑。别的方法俺也不会反正最终是显示出来了。赶快试试吧解决LINUX中字体安装后乱码问题
直接进入主题,先说安装字体的方法
一,下面的命令,可以安装黑体、楷体、仿宋:
sudo apt-get install deepin-meta-fonts
二,安装其他字体
1. 将字体复制到系统目录:
cd /usr/X11R6/lib/X11/fonts/TrueType
sudo cp /path/*.ttf to&
/usr/X11R6/lib/X11/fonts/TrueType/
2. 更新字体缓存:
sudo fc-cache -f -v
三,上面一步有时候也不一定,也可以把字体复制到/usr//usr/share/fonts/vista/这里的vista是你自己新建的一个,字体文件夹
四,大家会发现如果只是这样做的话字体会出现乱码,新安装的字体,不能显示,其实这是因为权限的问题,因为你所有对字体的操作都是root在执行,所以,这些字体只有root才有权利使用,所以呢,要给你自己新加的字体加上权限,
sudo chown user& *.ttf
以上一条命令就是把文件的所有权限交于你指定的用户,,相信这样可以成功解决大家的问题,如果不行的话,请大家再想办法,我应时这样做的,然后
成功了,,
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。在Linux中,有时Java程序的中文字体显示可能会显示为乱码或者方框,有时还会出现虽然没有乱码但文字显示的不清晰.这通常是由于Jre中字体相关设置不正确所导致的,修改Jre的字体配置文件可以解决这些问题.
解决Java字体显示为乱码或方块
找到配置文件
通常,Jre的字体配置文件存放在
其中,$JAVA_HOME环境变量表示Jre所在的路径,在安装了Java环境的系统中,通常已经设定。如/usr/lib/jvm/java-7-openjdk
如果不存在这个文件,可以检查看看有没有fontconfig.properties.src 并将这个文件复制一份命名为fontconfig.properties
准备想要在Java程序中使用的字体(需要带中文字符),将字体文件或字体文件的符号链接复制到$JAVA_HOME/jre/lib/fonts
修改配置文件
到存放有字体文件或字体符号链接的文件夹,如$JAVA_HOME/jre/lib/fonts,运行下述命令:
编辑$JAVA_HOME/jre/lib/fontconfig.properties文件,在version=1后面加入:
注意allfonts.chinese-arphic1=后面加的是前面输出的字体名后面的部分.如果原来文件中还有allfonts.chinese-arphic1开头的行,就把它们注释掉.
在配置文件中查找sequence.allfonts,如果其后的sequence开头的行中有chinese-arphics1,可以略过此步,否则在其后面加入一行:
解决字显示不清晰
有时运行的Java程序显示模糊或者字体边缘锯齿严重,可以在/etc/profile或~/.bashrc末尾加入:
其中这两行是两种不同的渲染方法,可以根据爱好选择其中一种.
引用本文请以超链接形式保留本文地址
本文地址为:
浏览:30699
没有人评论过此文,还不快抢个沙发!
记住我的信息
石博文 发表于很久以前
路人甲 发表于很久以前
路人甲 发表于很久以前
manatee 发表于很久以前
路人甲 发表于很久以前
石博文 发表于很久以前
路人甲 发表于很久以前
路人甲 发表于很久以前
路人甲 发表于很久以前
路人甲 发表于很久以前
博客: 石博文博客是一个关注Linux, web技术, C/C++算法设计与应用的独立博客. 研究IT新技术, 提供最新资讯, 分享相关程序与代码资料, 是一个话题新颖而广泛的IT博客平台.
博主石博文现在是一名软件工程专业的学生, 十分喜欢Linux并且拥抱开源技术, 尤好以C++/汇编语言为基础研究计算机底层技术, 关注新技术发展与应用, 希望通过此个人网站结识更多IT极客:)Linux系统部分软件中文显示乱码方框该怎么办?
作者:佚名
字体:[ ] 来源:互联网 时间:06-26 15:39:59
Linux系统部分软件中文显示乱码方框该怎么办?Linux下部分软件会出现中文显示异常的问题。如Netbeans等依赖JVM虚拟机运行的软件。这是由于JVM中文显示的字体缺失的缘故,下面分享解决办法
Linux下部分软件会出现中文显示异常的问题。如Netbeans等依赖JVM虚拟机运行的软件。这是由于JVM中文显示的字体缺失的缘故。方法就是将缺失的字体添入JVM目录。
1、查询JRE目录:
update-alternatives --config java
如图,获得目录/usr/java/jdk1.8.0_45/jre
这里使用的是Sun JDK,Linux默认使用OpenJDK,方法是一样的。
2、获取字体gbsn00lp.ttf:
部分系统默认提供此字体,可以查询/usr/share/fonts找寻,
不提供的可以直接上网搜索下载。
这里为了方便,直接提供字体链接:
3、移植字体:
在jre目录/lib/fonts下建立文件夹fallback,将gbsn00lp.ttf置入其中,即可。
获取权限等方法这里将不赘述。
4、效果图:
大家感兴趣的内容
12345678910
最近更新的内容

我要回帖

更多关于 liunx 中文乱码 的文章

 

随机推荐