1. 程式人生 > >關於confluence上傳文件附件預覽查看時出現亂碼的問題解決辦法

關於confluence上傳文件附件預覽查看時出現亂碼的問題解決辦法

ascii env ssi x11 要求 c盤 無法識別 ntc 默認自帶

在confluence上傳excel文件,預覽時發現亂碼問題主要是因為再上傳文件的時候一般是Windows下的文件上傳,而預覽的時候,是linux下的環境,由於linux下沒有微軟字體,所以預覽的時候無法識別文檔字體,所以才會出現亂碼。還比如某個業務有個功能生成圖片,結果圖片裏的字全變空格了,這也是服務器上沒相應的字庫造成的。

1、解決辦法:在服務器上安裝中文字體。操作方法如下:

1)先安裝想要的字體, 如楷體等, 從本機"c盤->Windows-Fonts"文件夾裏復制simkai字體拷到confluence部署機上(也可以多下載幾個字體放過去)。
 
2)在linux系統下安裝新字體
linux用fontconfig來安裝字體庫
[[email protected] ~]# yum -y install fontconfig     #一般是默認自帶的
 
安裝成功後,在/usr/shared目錄就可以看到fonts和fontconfig目錄了(之前是沒有的)
[[email protected] ~]# ll -d /usr/share/fonts/
[[email protected] ~]# ll -d /usr/share/fontconfig/
drwxr-xr-x. 3 root root 4096 11月  9 2017 /usr/share/fontconfig/
 
添加中文字體,如上面的楷體simkai字體文件到confluence部署機的/usr/share/fonts下的某個目錄下(比如新建一個windowsfonts目錄放進去)
[[email protected] ~]# cd /usr/share/fonts/
[[email protected] fonts]# mkdir windowsfonts
[[email protected] fonts]# ll windowsfonts/
總用量 4044
-rwxr-xr-x 1 root root 4135804 8月  17 2004 simkai.ttf
 
緊接著需要修改windowsfonts目錄的權限:
[[email protected] ~]# chmod -R 755 /usr/share/fonts/windowsfonts/
 
接下來需要安裝ttmkfdir來搜索目錄中所有的字體信息,並匯總生成fonts.scale文件
[[email protected] ~]# yum -y install ttmkfdir               #一般會默認自帶
 
然後執行ttmkfdir命令
[[email protected] ~]# cd /usr/share/fonts/windowsfonts/
[[email protected] windowsfonts]# mkdir -p /usr/share/X11/fonts/encodings/encodings.dir
[[email protected] windowsfonts]# ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
 
發現在/usr/share/fontconfig/windowsfonts/目錄下多了個fonts.scale
[[email protected] windowsfonts]# cat fonts.scale
2
simkai.ttf -misc-KaiTi_GB2312-medium-r-normal--0-0-0-0-c-0-ascii-0
simkai.ttf -misc-KaiTi_GB2312-medium-r-normal--0-0-0-0-c-0-iso10646-1
 
最後一步就是修改字體配置文件了,首先通過編輯器打開配置文件,可以看到一個Font list,即字體列表,在這裏需要把我們添加的中文字體位置加進去:
[[email protected] windowsfonts]# vim /etc/fonts/fonts.conf
.......
<!-- Font directory list -->
 
    <dir>/usr/share/fonts</dir>
    <dir>/usr/share/X11/fonts/Type1</dir> <dir>/usr/share/X11/fonts/TTF</dir> <dir>/usr/local/share/fonts</dir>
    <dir>/usr/share/fonts/windowsfonts</dir>                #添加這一行
    <dir>~/.fonts</dir>
 
<!--
 
然後輸入:wq保存退出,最後別忘了刷新內存中的字體緩存,這樣就不用reboot重啟了:
[[email protected] windowsfonts]# fc-cache
 
最後再次通過fc-list看一下字體列表:
[[email protected] windowsfonts]# fc-list
........
楷體_GB2312,KaiTi_GB2312:style=Regular
.......
 
可以看到已經成功安裝上了中文字體,至此安裝過程就全部結束,再次查看報表可以發現中文樣式和內容均已可以正常顯示了。
 
3)在confluence部署機的安裝目錄, 如/opt/atlassian/confluence/bin下找到setenv.sh, 找到CATALINA_OPTS, 加入一行
[[email protected] ~]# vim /opt/atlassian/confluence/bin/setenv.sh
......
CATALINA_OPTS=”-Dconfluence.document.conversion.fontpath=/usr/share/fonts/windowsfonts/ ${CATALINA_OPTS}”
 
4)清空confluence的home下viewfile目錄和shared-home/dcl-document目錄裏的所有緩存文檔文件, 不清空的話, confluence預覽舊文件時還是會顯示方框,
只有新文件才會正常。
[[email protected] ~]# cd /var/atlassian/application-data/confluence/shared-home/dcl-document
[[email protected] dcl-document]# rm -rf ./*
 
5)重啟confluence就OK了。如果重啟後,發現原來上傳的附件預覽還出現亂碼,那就是緩存文檔文件所導致!可以刪除這些文件,重新上傳進去就可以正常預覽了!!
[[email protected] ~]# lsof -i:8080
COMMAND    PID       USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
java    138112       jira  151u  IPv6 230299384      0t0  TCP *:webcache (LISTEN)
java    188894 confluence  868u  IPv6 286937024      0t0  TCP confluence-server:37886->confluence-server:webcache (CLOSE_WAIT)
[[email protected] ~]# /etc/init.d/confluence restart
 
順便說一句,confluence對數據庫的編碼格式要求是utf-8,所以請把數據庫編碼格式設置正確,以免其他地方出現亂碼。

註意:以上是將字體直接安裝到服務器上,還可以將字體安裝到java服務程序裏,步驟如下:
1)下載宋體字體文件simsun.ttc(或者直接下載simsun.ttf)
2)將該文件復制到$JAVA_HOME/jre/lib/fonts目錄下,改名為simsun.ttf
3) 重啟java服務進程  

---------------------------------------------書山有路勤為徑,學海無涯苦作舟--------------------------------------------------------

關於confluence上傳文件附件預覽查看時出現亂碼的問題解決辦法