線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2497
推到 Plurk!
推到 Facebook!

請問為何分佈到 Linux 上部分中文無法正常顯示?

尚未結案
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-23 00:07:29 IP:211.76.xxx.xxx 未訂閱
我用 JBuilder 9 在 Windown 2000 下寫了一隻 Application,執行一切正常。利用 Wizard 做出一個 for Linux 檔案後,也可在 Linux 上執行並正確存取資料庫,一切運作正常,唯讀部分中文顯示不正常,變成框框符號。但每個 Frame 的 Title 中文是正常的,MenuItem , DataExpress (JTable,JTextField..),JLabel...等其他一切顯示中文的皆不正常。 我試過更改 Local 屬性成 Taiwan 或改 Font 也沒有用,請高手指點一二,謝謝。 ps: Linux Red Hat 9.0 , j2sdk 1.4.1_02 JackTasy
------
JackTasy
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-23 00:21:55 IP:211.76.xxx.xxx 未訂閱
我有想過 Unicode 的問題,但之前開發 JSP 的經驗,是使用 java.net.URLDecoder.decode 或是 request.setCharacterEncoding("MS950")...等等方式 但現在我是開發 Application 非 JSP,一時無法變通如何套用 Unicode? 如 JLabel1.Caption = '中文'; 這樣如何套用呢?? 請大家不吝指點,謝謝。 JackTasy
------
JackTasy
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-23 00:55:24 IP:61.64.xxx.xxx 未訂閱
你的Linux有裝中文套件嗎? 沒有中文字型應是不能的 第2點不太知道你的資料庫 是mysql嗎 還是pgsql 不過個人認為 你的問題應不是Unicode問題 因為連 中文 二字都無法顯示了 因該朝 字型支援先看看 再測雙字元字型 最後才是 Unicode問題 JBuilder 沒玩過所以庵是猜猜 【JAVA】【轉貼】別人解決server side java中文問題的方法 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48457 看看web的方式 能用在你的程式轉換嗎? ps: Linux Red Hat 9.0 這不代表就一定有裝相關支援的字形 或資料庫語系設定
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-23 09:22:33 IP:61.220.xxx.xxx 未訂閱
謝謝 conundrum 的指教。 我補充說明一下: 1.我是用 MySQL ,但連 JMenuItem,JLabel等跟資料庫無關的地方中文也不行,所以應和 MySQL 無關。 2.雖然用 JBuilder 開發,但 JLabel,JMenu 等都是標準 swing 套件,所以也應該和工具無關。 3.Red Hat 我就不確定是否有你所說的中文套件。不過我 Red Hat 是中文介面的,且上面裝 mysqlcc 也可正常顯示中文,再者我寫的 Application 至少每個 JFrame or JDialog Title Bar 也可正常顯示中文,且有中文輸入法,所以 OS 對中文支援應該是有的吧,不過我也會再往這方向想想。 4.之前開發過 Web (JSP) 也有中文問題,且我已經解決了,但 Web 上面不會有 JBuild dataExpress 套件 (如 JDBTable 類似 Delphi DBGrid),所以解決方法應該是不同的我想。 JackTasy
------
JackTasy
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-23 09:47:36 IP:61.64.xxx.xxx 未訂閱
JackTasy 兄 你好 說指教太嚴肅了 我是沒用 JBuilder 因為我不會 不過我想你先查一下mysql的語系設定myconf 是否為big5 如有修改mysql要重啟動 myconf如在windows的mysql是my.ini檔 1.我是用 MySQL ,但連 JMenuItem,JLabel等跟資料庫無關的地方中文也不行,所以應和 MySQL 無關。 實在不太了解 不過只有試市才知道 4.之前開發過 Web (JSP) 也有中文問題,且我已經解決了,但 Web 上面不會有 JBuild dataExpress 套件 (如 JDBTable 類似 Delphi DBGrid),所以解決方法應該是不同的我想。 如果是資料庫 感知元件 那你的mysql語系 是一定最好設big5
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-23 10:05:38 IP:61.64.xxx.xxx 未訂閱
1.試一下螢火飛女俠的經典之作吧: http://firefly.idv.tw/setfont/ http://firefly.idv.tw/test/Forum.php?Board=1&Article=1d4bd6918350639d63804e964646c4da&Func=view ======================================================== 2.即便是在非中文的OS(ex english version Windows)之下,也是類似的把font.properties.tw取代成font.properties(取代JAVA預設的FONT資訊) 3.或是在jvm啟動時加入參數,如.... -Dfile.encoding=zh_TW.Big5 -Ddefault.client.encoding=zh_TW.Big5 -Duser.language=zh -Duser.region=TW (還是...-Duser.language=zh_TW -Duser.region=TW ?要麻煩你試一下了) 如果是以這些參數來解決中文問題的話,這一點,在web start中,好像沒有用...因為web start就是用JVM去啟動的.寫在ap的system.properties中就來不及了.
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-23 11:23:11 IP:61.220.xxx.xxx 未訂閱
再次感謝 conundrum and neoart 的指點。因為看來非資料庫地方也有問題,所以我先不往 MySQL 方面著手。    試了 neoart 版主第三個方法後,出現下列訊息:WARNING: Default charset zh_TW.Big5 not supported, using ISO-8859-1 instead (我是用 j2sdk1.4.1_02) 所以我試了下列四種組合 -Dfile.encoding=zh_TW.Big5 -Ddefault.client.encoding=zh_TW.Big5 -Duser.language=zh -Duser.region=TW -Dfile.encoding=zh_TW.Big5 -Ddefault.client.encoding=zh_TW.Big5 -Duser.language=zh_TW -Duser.region=TW -Dfile.encoding=ISO-8859-1 -Ddefault.client.encoding=ISO-8859-1 -Duser.language=zh -Duser.region=TW -Dfile.encoding=ISO-8859-1 -Ddefault.client.encoding=ISO-8859-1 -Duser.language=zh_TW -Duser.region=TW 結果是在 Windowns 平台上ok,但 Linux 上四種組合連原本的 Title 中文也變成 ? 問號了。 下面提供兩種版本畫面,有中文 Title 的是沒做任何加工的,變亂碼的是加了其中一種。 謝謝 neoart 的建議,我會再往其他方向試試看... < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=15289437&CC=341943"> JackTasy
------
JackTasy
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-23 19:52:31 IP:61.221.xxx.xxx 未訂閱
http://java.sun.com/products/archive/j2se/1.4.0_04/ja/font-requirements.html    http://java.sun.com/products/archive/j2se/1.3.1_04/font-requirements.html    不確定喔 這是sun的說明 因為系統不太一樣 所以有待實驗     
 必要的字形軟件包
JavaTM 2 SDK, Standard Edition
Version 1.4.0
SolarisTM 操作的環境
      位置一ru每一不同文字編碼必要腹足類裡。使用正在做系統哪個 Solaris 字形
軟件包必要嗎、以下的表面確認請。實用程序 pkginfo 、系統安裝正在做軟件
包的一覽表指示使用成果。       
  必要的 Solaris 字形軟件包 (Java 2 Solaris 版)    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Java        文字代碼       字形      支持做位置一ru
位置一ru                     軟件包
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    一切      iso-8859-1       SUNWi1of、    一切的位置一ru必需
                             SUNWxwfnt     (幾乎的西文歐洲位置一
                                           ru這軟件包隻有充分)    *_EURO      iso-8859-15      SUNWi15rf(3)  歐元通貨記號使用位置一ru    cs、hu、pl  iso-8859-2       SUNWi2of、    捷克斯洛伐克共和國、匈牙利、波蘭、
                             SUNWi2rf(1)   surobekia、阿爾巴尼亞、首領近、
                                           克羅地亞、羅馬尼亞、斯洛文尼亞    lt、lv      iso-8859-4       SUNWi4of、    拉脫維亞、立陶宛 (Solaris 2.6、7)
                             SUNWi4rf    lt、lv      iso-8859-13      SUNWi13rf     拉脫維亞、立陶宛 (Solaris 8)    ru          iso-8859-5       SUNWi5of      俄羅斯、保加利亞、馬其頓、塞爾維亞    el          iso-8859-7       SUNWi7of、    希臘
                             SUNWi7rf    tr          iso-8859-9       SUNWi9of、    土耳其
                             SUNWi9rf    ja      jisx0201、jisx0208、 SUNWjxcft、   日本
             jisx0212        SUNWjxmft(2)    ko           ksc5601         SUNWkcoft     韓國    zh_CN        big5          SUNWcttf      中國 (PRC)    zh_TW        cns11643        SUNWhttf      中國 (台灣)    zh_TW_Big5     big5          SUNW5ttf(4)   中國 (台灣) BIG5    zh_GBK         gbk           SUNWgttf      中國 (RPC) GBK    *_UTF-8       utf-8     SUNW5ttf、SUNWcttf、 一切的 UTF-8 位置一ru (Solaris 8)
                        SUNWi15rf、SUNWi2of、
                        SUNWi4of、SUNWi4rf、
                        SUNWi5of、SUNWi7of、
                        SUNWi7rf、SUNWi9of、
                        SUNWi9rf、SUNWjxcft、
                        SUNWjxmft(2)、SUNWkttf    注解:
  (1)  SUNWi2rf  Solaris 2.6 達到 7 必要。
  (2)  SUNWjxmft  Solaris 8 必要。
  (3)  Solaris 2.6 事情的歐元位置一ru字形、歐元通貨支持日本男式緊腿褲
       包含。
  (4)  SUNW5ttf  Solaris 7 達到 8 使用可能。
     
http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html 底下是使用翻譯程式 也許不是翻的很好 In Traditional Chinese: 字體配置文件Java 2 平臺定義每實施必須支持的五個邏輯字體名字: Serif 、SansSerif 、Monospaced 、對話, 和DialogInput 。這些邏輯字體名字被映射對物理字體用實施受撫養者方式。太陽的Java 2 個執行時間的環境使用字體配置文件映射邏輯字體名字對物理字體。有幾個文件支持不同的繪圖根據主人作業系統版本。文件尋找解放目錄在J2RE 設施之內。用戶能編輯或創造他們自己的字體配置文件對他們的特殊系統設定調整繪圖。注意然而, 這是J2RE 的修改, 並且太陽不支持修改過的J2REs 。注意字體配置文件是實施受撫養者。沒有Java 2 平臺的所有實施使用他們, 並且格式和內容變化在不同的執行時間的環境之間並且在發行之間。這個文件描述格式由版本1.5.0 使用的太陽的Java 2 個執行時間的環境。裝貨字體配置文件名字被使用在字體配置文件物產為所有平臺物產為窗口物產為Solaris 和Linux -------------------------------------------------------------------------------- 裝貨字體配置文件字體配置文件是物產文件依照由財產分類指定和被裝載通過那類。發現適當的文件, 以下資訊使用: JavaHome - J2RE's 目錄, 依照由"java.home" 系統特性給。OS - 串辨認一個作業系統變形: 為窗口, "98", "2000 年", "我", "XP", "2003 年" 。為Solaris, 空。為Linux, "太陽", "RedHat", "Turbo", "SuSE" 。版本- 串辨認作業系統版本。運行時間使用一以下文件它發現: JavaHome/lib/fontconfig.OS.Version.properties JavaHome/lib/fontconfig.OS.properties JavaHome/lib/fontconfig.Version.properties JavaHome/lib/fontconfig.properties 名字被使用在字體配置文件在字體配置文件過程中, 一定數量不同的名字被使用: LogicalFontName - 五個邏輯字體名字的當中一個: serif 、sansserif 、monospaced 、對話, 和dialoginput 。在字體配置文件, 這些名字總是用小寫。StyleName - 四種標準字體風格的當中一個: 簡單, 大膽, 斜體字, 和bolditalic 。再, 這些名字總是用小寫。PlatformFontName - 一種物理字體的名字, 在格式典型地被使用在平臺: 在窗口, 一個字體面孔名字, 譬如"傳訊者新" 或"uad74.ub9bc" 。在Solaris 和Linux, 一個xlfd 名字, 譬如"- monotype 時間新羅馬規則r * %d * * p * iso8859 1" 。注意"%d" 被使用為字體大小- 實際字體大小被填裝在運行時間。CharacterSubsetName - 一個名字對於某些組分字體可能回報Unicode 字符集的一個子集。為窗口, 以下名字被預定義: 按字母順序, 阿拉伯, 漢語ms936, 漢語gb18030, 漢語ms950, 漢語hkscs, 斯拉夫語字母iso8859 5, 斯拉夫語字母cp1251, 斯拉夫語字母koi8 r, devanagari, dingbats, 希臘語, 希伯來語, 日語, 韓國語, 拉丁語, 標誌, 泰國。為Solaris 和Linux, 以下名字被預定義: 阿拉伯, 漢語gb2312, 漢語gbk, 漢語gb18030 0, 漢語gb18030 1, 漢語cns11643 1, 漢語cns11643 2, 漢語cns11643 3, 漢語big5, 漢語hkscs, 斯拉夫語字母, devanagari, dingbats, 希臘語, 希伯來語, 日語x0201, 日語x0208, 日語x0212, 韓國語, 韓國語johab, 拉丁語1, 拉丁語2, 拉丁語4, 拉丁語5, 拉丁語7, 拉丁語9, 標誌, 泰國。字體配置文件也釧w義另外的名字辨認另外的字符子集。輸入- 缺省內碼的標準名字, 如所提供由java.nio.charset.Charset.defaultCharset().name() 。語言- 最初的缺省地點的語言。國家- 最初的缺省地點的國家。 物產為所有平臺版本物產版本物產辨認字體配置格式版本。這個文件指定版本1 。完全物產有形式: version=1 組分字體繪圖組分字體映射物理字體使用回報字符從一個指定的字符子集與一種指定的邏輯字體在指定的樣式的物產描述。鑰匙有形式: allfonts.CharacterSubsetName LogicalFontName.StyleName.CharacterSubsetName 第一形式被使用如果同樣字體被使用為字符子集獨立邏輯字體和樣式(在這種情況下, 字體rendering 引擎嚮字體申請算法樣式) 。第二個形式被使用如果不同的物理字體被使用為一個字符子集為不同的邏輯字體和樣式。在這種情況下, 物產必須被指定為各個邏輯字體的組合和樣式, 那麼20 物產為一個字符子集。如果第一形式的物產是存在為字符子集, 第二個形式的物產為同樣字符子集然後被忽略。價值是平臺字體名字, 如上所述。因為字符子集由被測量的字體支持經常重疊, 分開的查尋序列物產被使用定義在哪次序嘗試字體當回報字符。查尋程式化Java 執行時間的用途序列物產確定查尋序列為五種邏輯字體。但是, 字體配置文件也釩?w是具體的對內碼、語言, 和國家的組合的物產, 並且運行時間然後將使用查尋確定查尋序列物產為各種邏輯字體。鑰匙有形式: sequence.allfonts.Encoding.Language.Country sequence.LogicalFontName.Encoding.Language.Country sequence.allfonts.Encoding.Language sequence.LogicalFontName.Encoding.Language sequence.allfonts.Encoding sequence.LogicalFontName.Encoding sequence.allfonts sequence.LogicalFontName allfonts 形式被使用如果序列被使用為所有五種邏輯字體。形式指定邏輯字體名字被使用如果不同的序列被使用為不同的邏輯字體。為各種邏輯字體, Java 運行時間使用財產價值與一上述鑰匙。這物產確定主要查尋序列為邏輯字體。文件也釣疇B定義一個唯一撐腰查尋序列。鑰匙為撐腰查尋序列物產是: sequence.fallback 所有查尋序列物產的價值有形式: SearchSequenceValue: CharacterSubsetName CharacterSubsetName, SearchSequenceValue 主要查尋序列物產指定字符子集名字為必需的字體, 被使用為兩AWT 和第2 字體rendering 。撐腰查尋序列物產給字符子集名字對於任意字體, 被使用作為撐腰為所有邏輯字體, 但只對於第2 字體rendering 。運行時間自動地增加Lucida Sans 規則字體作為撐腰字體為第2 rendering 如果它已經不被指定。如果執行時間的環境有一個目錄lib/fonts/fallback 並且這個目錄包含合法的TrueType 或第一類型字體, 運行時間自動地增加這些字體當撐腰字體為第2 rendering 。在窗口, 如果有系統EUDC (終端用戶被定義的字符) 字體向窗口登記, 運行時間自動地增加這種字體並且撐腰字體為第2 rendering 。序列物產確定在哪種序列組分字體被設法回報一個指定的字符。例如, 給以下物產: sequence.monospaced=japanese, 按字母順序的sequence.fallback=korean monospaced.plain.alphabetic=Arial monospaced.plain.japanese=MSGothic 運行時間首先將試圖回報一個字符與MSGothic 字體的monospaced.plain.korean=Gulim 。如果那種字體為字符不提供一glyph, 它將試圖Arial 字體。為第2 rendering, 它並且將嘗試Gulim 和Lucida Sans 規則字體並且所有TrueType 或第一類型字體在運行時間的lib/fonts/fallback 目錄。為第2 rendering 在窗口, 如果有系統EUDC 字體向 排除排列排除範圍物產指定Unicode 應該從被回報被排除與字體對應於一個被測量的字符子集的字符範圍。這被使用如果一種字體以大字元庫需要被安置及早在查尋序列(例如, 為表現原因), 但它支持應該改為被畫與一種另外字體的一些字符。這些物產是任意的, 那麼那裡是一致多數每字符子集。鑰匙有形式: exclusion.CharacterSubsetName 價值有形式: ExclusionRangeValue: 範圍範圍, ExclusionRangeValue 範圍: 炭灰- 炭灰炭灰: HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit 炭灰是Unicode 字符代表作為一個十六進制值。比例字體比例字體物產描述關係在否則等效字體之間比例和非比例變形。這些物產被使用實施特選由GraphicsEnvironment.preferProportionalFonts 方法指定。鑰匙有形式: proportional.PlatformFontName 空格符在平臺字體名字必須用底線字符替換價值有形式的("_").: PlatformFontName 按價值, 空格符留給非限定。各物產表明, 字體被命名按價值是字體的比例等值被命名在鑰匙, 並且還字體被命名在鑰匙是字體的非比例等值被命名按價值。字形文件名字字體文件名物產提供文件的名字包含物理字體被使用在字體配置文件。文件名字必需為所有物理字體在窗口和被推薦為所有物理字體在Solaris 和Linux 。鑰匙有形式: filename.PlatformFontName 空格符在平臺字體名字必須用底線字符替換價值是文件的文件名字包含字體的("_"). 。在窗口, 簡單的文件名字被使用; 並且執行時間的環境尋找各個文件首先在它自己的lib/fonts 目錄, 然後在窗口字體目錄。在Solaris 和Linux, □對路徑名字、道路名字從"# $$JRE_LIB_FONTS>" 對於執行時間的環境的自己的lib/fonts 目錄開始, 或xlfd 名字被使用。 被添附的字體道路Java 運行時間可能自動地確定包含字形文件的一定數量的目錄, 譬如它自己的lib/fonts 目錄或窗口字體文件夾。另外的目錄可能被指定被添附對字體道路。鑰匙有形式: appendedfontpath 價值有形式: AppendedFontPathValue: 目錄目錄PathSeparator AppendedFontPathValue 道路分離器是java.io.File.pathSeparator 的平臺依賴價值。-------------------------------------------------------------------------------- 物產為窗口那裡是沒有platform-specific 物產為窗口。但是, 有字符子集名字的一種特殊格式被使用在查尋序列。命名"按字母順序" 可能採取詞尾表明字符輸入與相關子集: 按字母順序的alphabetic/default alphabetic/1252 這資訊只被使用為AWT, 不是為第2 。"/缺省" 詞尾對缺省內碼的字符集制約對組分字體的用途為這個字符子集; "/1252 年" 詞尾對窗口1252 字符集。為訪問組分字體繪圖和排除範圍, 字符內碼詞尾被省去。為所有其它字符子集, AWT 字符內碼在Java 運行時間以前內部確定。 物產為Solaris 和Linux 主題組分字體繪圖AWT 文本組分, 依靠基於主題的同輩為文本rendering, 和其它AWT 組分和第2 一樣無法總使用平臺字體。當查找組分字體為這些組分, 另外的鑰匙被認可。完全套鑰匙查找在這種情況下是: allfonts.CharacterSubsetName.motif LogicalFontName.StyleName.CharacterSubsetName.motif allfonts.CharacterSubsetName LogicalFontName.StyleName.CharacterSubsetName AWT X11 字體道路AWT 字體道路物產指定應該增加來X11 伺服器字體道路的平臺目錄。鑰匙有形式: awtfontpath.CharacterSubsetName 價值有形式: AWTFontPathValue: 目錄目錄: AWTFontPathValue 目錄必須是合法的X11 字體目錄。Java 運行時間保證, 目錄為一個主要查尋序列的所有字符子集由查尋序列查尋發現是X11 字體道路的一部分。實施假設, 所有邏輯字體使用同樣套字符子集為內碼、語言, 和國家的一個指定的環境。 http://developers.sun.com/dev/gadc/technicalpublications/presentations/iuc10.pdf 此PDF檔也可下載看看 發表人 - conundrum 於 2004/04/23 20:05:20
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-10 15:45:18 IP:61.220.xxx.xxx 未訂閱
引言: 1.試一下螢火飛女俠的經典之作吧: http://firefly.idv.tw/setfont/
解決啦!從上面那個連結一步一步做,看來關鍵點在於font.properties.zh_TW.gz 這個檔案,因為直到把該檔下載放入正確路徑後才成功的! 特別感謝 neoart 版主的關切和指導,因為這兩禮拜忙其他事務而短暫中斷... 發現一個有趣的現象但我想並不重要也暫不會去追究,使用 >
------
JackTasy
系統時間:2024-05-08 13:26:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!