顯示具有 亂碼 標籤的文章。 顯示所有文章
顯示具有 亂碼 標籤的文章。 顯示所有文章

星期六, 12月 22, 2012

另一個Owncloud中文亂碼問題

另一個Owncloud中文亂碼問題,坦白說應該是另一個IE中文亂碼問題。原因瀏覽器下載檔案時檔名是參照伺服器送出的header('Content-Disposition: attachment; filename=)這個標頭,而IE在這裡的檔名竟然不支援utf-8而且到了IE9都還沒修正。為了接濟這些可憐的IE只好修改 apps/files/download.php如下
(owncloud 4.5.6版已避開了這個錯誤,不需要進行以下修改)

星期三, 12月 19, 2012

Owncloud中文目錄包裹下載

Owncloud提供私有雲端儲存環境的自由軟體解決方案,目前4.5版中文支援已經很完整,但是早期ZIP壓縮檔內的檔名不支援utf-8,所以使用ZIP格式下載整個目錄或多個檔案時大部分解縮軟體無法正確處理utf-8編碼的檔名,造成檔案目錄有中文亂碼問題。修改lib/files.php如下,可以將壓縮檔中的檔名改為以big-5編碼。


星期三, 1月 20, 2010

解決wvText轉出中文變成星號(*)問題

wvText是wvWare套件中的一個script程式,用來將MS Word檔案轉成普通文字檔。
執行wvText時會先呼叫wvhtml將MS Word檔案轉成html格式,再依優先順序呼叫
elinks、links、lynx、wv或Ware -x wvText.xml
去除html檔中的html標籤

如果電腦中沒有裝elinks,wvText就會改用links,而links如果不加-codepage參數,中文就會轉成星號(*)
而elinks不會有這個問題,而且依wvText的說明elinks轉出的格式也最完整。

所以如果wvText轉出的中文字如果都是星號(*)的話,裝上elinks應該可以解決。

星期三, 12月 16, 2009

Xataface中文亂碼問題

Xataface 1.2 版開始已有簡體中文介面,如果資料庫正確儲存為utf8時Xataface也可以正常顯示,但是預設語系還是ISO-8859-1,所以輸入中文時都會被轉碼為&#999999格式存入資料庫。
解決方式為在conf.ini最上方設定
default_oe=UTf-8
default_ie=UTF-8
如果使用Xataface建置的應用系統很多,不想重復設定,可直接修改Xataface/Dataface/Application.php中,將
if ( !isset($this->_conf['default_ie']) ) $this->_conf['default_ie'] = 'ISO-8859-1';
if ( !isset($this->_conf['default_oe'])) $this->_conf['default_oe'] = 'ISO-8859-1';
ISO-8859-1改為UTF-8,所有應用系統都會以UTF-8為編碼方式。

星期三, 1月 10, 2007

C_950.nls 修改方式

各種big5對unicode碼表
http://www.moztw.org/docs/big5/

從c_950.nls讀出對應表
od -v -w2 -A n -t x2 -j 1056 -N 64511 c_951.nls | awk 'BEGIN {a=0x8100} {printf "0x%X\t", a++; print "U+" toupper($1)}' | grep -v 'U+003F' > cp951.txt
http://me.abelcheung.org/diary/general/computer/software/


nls檔案結構
http://shlimazl.nm.ru/eng/nls.htm(碼位不準)

手動修改方式例
964F(big5e) 5803(utf8)
以16位元方式計算
(964F-7EF0)*2=2EBE -> 在檔案2EBE的位址輸入 0358 (utf8碼)
(5803+8011)*2=1B028 -> 在檔案1B028的位址輸入 4F96 (big5e碼)

公式-用16進位計算
utf8碼位址=(big5碼-7EF0)*2
big5碼位址=(utf8碼+8011)*2


/*-----整個檔案轉換-----*/
#!/usr/bin/perl
$file_b5u8 = 'big5e.txt'; # big5e to utf8 table file
$file_nls = 'c_950-.nls'; # c_950.nls file

open(FHb5u8, $file_b5u8) || die "can't update somewhere: $!";
open(FHnls, "+<$file_nls") || die "can't update somewhere: $!"; while (<FHb5u8>) {
my @array = split(' ',$_);
next if (substr($array[1],0,2) ne 'U+');
my $b5s = $array[0];
my $u8s = '0x'.substr($array[1],2);
my $b5s1 = '0x'.substr($b5s,2,2);
my $b5s2 = '0x'.substr($b5s,4,2);
my $u8s1 = '0x'.substr($u8s,2,2);
my $u8s2 = '0x'.substr($u8s,4,2);
my $b5as = (hex($b5s) - hex('0x7EF0'))*2;
my $u8as = (hex($u8s) + hex('0x8011'))*2;
print "$b5s,$u8s:$b5as->$u8s2$u8s1,$u8as->$b5s2$b5s1\n";
seek(FHnls, $b5as, 0);
printf FHnls "%c%c", hex $u8s2, hex $u8s1;
seek(FHnls, $u8as, 0);
printf FHnls "%c%c", hex $b5s2, hex $b5s1;
}

close FHb5u8;
close FHnls;

星期一, 10月 02, 2006

pollxt 中文化

pollxt 是加強版的 joomla 票選元件,未來可能納入標準元件中。
pollxt 已支援語言檔,可以翻譯 language/english.php 後另存為 traditional_chinese.php即可。

pollxt 1.22.13 投票時如果提供文字方塊輸入,存入資料庫會變成亂碼(html格式)。
處理方式:
修改 administrator/components/com_pollxt/pollxt.inc.php
$val = htmlentities($xtVal[$v]); 為
$val = htmlspecialchars($xtVal[$v]);

參考資料:
jommla擴充套件中文化指引
htmlspecialchars函式說明