老問題:中文檔名

本區專門提供 Mac OS X 使用者交換使用心得

版主: ross_ttbryanchangdigdogchester

內容
發表人
yzhuang
留言破百
文章: 124
註冊時間: 05/02/2001 1:01 am
來自: Taipei/Taiwan

老問題:中文檔名

#1 文章 yzhuang »

我目前用的是OS X 10.2.2,選的是英文為主要語系。結果

1. 一些以前用OS 9燒的ISO 9660格式CD上面的中文都看不到了。
2. PC上的中文光磁檔名也都亂成一團。
3. iTune輸入中文檔名的MP3也都成了亂碼

試著切成中文系統,結果還是一樣?

越來越不明白了... [img]images/smiles/icon_mad.gif[/img]
頭像
kulong
基本會員
文章: 62
註冊時間: 05/05/2001 1:01 am
來自: U.S.A./Houston

老問題:中文檔名

#2 文章 kulong »

I'm assuming it's because OS X uses unicode while OS 9 use Big-5

<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>原始發信人 NeuroMac:
<STRONG>我目前用的是OS X 10.2.2,選的是英文為主要語系。結果

1. 一些以前用OS 9燒的ISO 9660格式CD上面的中文都看不到了。
2. PC上的中文光磁檔名也都亂成一團。
3. iTune輸入中文檔名的MP3也都成了亂碼

試著切成中文系統,結果還是一樣?

越來越不明白了... [img]images/smiles/icon_mad.gif[/img]</STRONG><HR></BLOCKQUOTE>
頭像
bryanchang
討論區管理員
文章: 7057
註冊時間: 04/19/2001 1:01 am
來自: The '60s
聯繫:

老問題:中文檔名

#3 文章 bryanchang »

如果是燒成 HFS 格式的 CD 可以在 Get Info Window 裡指定檔名的編碼,如此中文檔名就看得到了。
yzhuang
留言破百
文章: 124
註冊時間: 05/02/2001 1:01 am
來自: Taipei/Taiwan

老問題:中文檔名

#4 文章 yzhuang »

可是Win 2000不是也用Unicode嗎?
為什麼它讀得到那些中文檔名呢?

HFS可以選,那意思是不是說ISO就不行了?
(我想是吧!?)
頭像
bryanchang
討論區管理員
文章: 7057
註冊時間: 04/19/2001 1:01 am
來自: The '60s
聯繫:

老問題:中文檔名

#5 文章 bryanchang »

你說的是中文版 Win 2K 吧?
yzhuang
留言破百
文章: 124
註冊時間: 05/02/2001 1:01 am
來自: Taipei/Taiwan

老問題:中文檔名

#6 文章 yzhuang »

<BLOCKQUOTE><font size="1" face="XYZ">quote
你說的是中文版 Win 2K 吧?
是的。
中文版的Win 2000的中文造詣確實比中文版的OS X強多了。不過英文版的Win 2000 + 中文 kit卻是比英文模式下的OS X差多了。
頭像
bryanchang
討論區管理員
文章: 7057
註冊時間: 04/19/2001 1:01 am
來自: The '60s
聯繫:

老問題:中文檔名

#7 文章 bryanchang »

印象中 Windows 平台上一直都是「雙語系統」:他們多是用硬幹的方式來達到中文相容的目的,也就是說軟體只能顯示英語 + 一個外國語。

Win 2K + Language Pack 就回到跟 Mac OS X 一樣的「多國語系統」的作法,對於中文的支援自然也就沒那麼好了。
yzhuang
留言破百
文章: 124
註冊時間: 05/02/2001 1:01 am
來自: Taipei/Taiwan

老問題:中文檔名

#8 文章 yzhuang »

回到OS X的中文問題
例如說我有一個中文的MP3 folder
上面的中文在Finder下看沒問題
可是一拉到iTune就成了亂碼

這也是和Unicode有關嗎?
可是在Finder下顯示沒問題啊
頭像
bryanchang
討論區管理員
文章: 7057
註冊時間: 04/19/2001 1:01 am
來自: The '60s
聯繫:

老問題:中文檔名

#9 文章 bryanchang »

你說的是 ID3 Tag 有亂碼?這個跟編碼的確有關。
yzhuang
留言破百
文章: 124
註冊時間: 05/02/2001 1:01 am
來自: Taipei/Taiwan

老問題:中文檔名

#10 文章 yzhuang »

<BLOCKQUOTE><font size="1" face="XYZ">quote
你說的是 ID3 Tag 有亂碼?這個跟編碼的確有關。
所以說iTune是讀檔內的ID3 Tag而不管外在的檔名了是吧!
換句話說,除非Apple內建Big 5 -> Unicode,要不就沒救了?這是Apple Taiwan 的事還是Apple的事?
頭像
macluo
基本會員
文章: 36
註冊時間: 08/29/2002 1:01 am
來自: iMacCD 電腦前

老問題:中文檔名

#11 文章 macluo »

用 Diskcatalog maker 這個程式可以看到 big5 編碼的檔名(不管是光碟或硬碟上都適用)。這個由日本人發展的程式目前支援 big5 編碼但 unicode 中文檔名反而不能看(但應該可以暫時解決亂碼的問題)。

如果亂碼檔是存在硬碟上,有兩個方式可以修正那個問題:
1. 開啟 classic environment 的應用程式將檔案開啟後,再重新存一遍。之後在 OS X 底下檔名應該就會正常(但在 native OS 9 底下會看不到)
2. 開啟 classic environment 的 SimpleText (不是 OS X development tool 的 SimpleText),以及 OS X 底下的 TextEdit ,接著以下列方法來修正

中文亂碼 --> SimpleText (改 Taipei 字)---> TextEdit ( 這時會變成 unicode 編碼)---> 貼回中文檔名

以上方式修正的中文檔名在 OS 9 底下反而看不到(在我電腦上這樣,不曉得別人是...)

********************************
為了幫大家了解什麼是亂碼,在這邊設計了一個實驗請大家跟著做做看:

實驗前請開啟
classic environment 和 SimpleText
OS X 底下的 TextEdit

在 SimpleText 設定為台北字接著用中文輸入法輸入一串中文(請用輸入法打不要用拷貝和貼上的方式做),然後將這字串拷貝到 OS X 下的檔名。
這時候這個檔名在 OS X 底下是亂碼(但在 native OS 9 底下是正常顯示)。

(以下動作為 copy & paste)
0. 在 SimpleText 開個新視窗。
1. 中文亂碼檔名 --> SimpleText 改成台北字後會正常顯示
2. 中文亂碼檔名 --> TextEdit 因為變成 unicode 所以永遠都是亂碼
3. 將 SimpleText 上的中文 ---> TextEdit 之後會自動轉 unicode 所以中文顯示正常。
4. 將 TextEdit 上的中文字 ---> OS X 中文檔名(此時應該是正常顯示)。
5. 將 TextEdit 上的中文字 ---> SimpleText 此時會變成亂碼1。
6. 將 OS X 中文檔名 ---> SimpleText 是正常顯示檔名,但請查看字型:字型變成 Osaka 。
7. 將 SimpleText 上的 Osaka 字型中文 --> TextEdit (中文正常顯示)
8. 將 SimpleText 上的 Osaka 字型中文 --> OS X 中文檔名 (中文顯示亂碼)
9. 在 SimpleText 上 全選之後,將 字型改為 Geneva 大家可以看到

編碼都不相同....只能用一句話來形容那就是 亂七八糟毫無章法。


再拿第二個實驗秀給大家看看 OS X 中文有什麼怪怪的問題

1. 用 OS 9 開機
2. 執行 SimpleText
3. 選擇台北字型 打上 "美商蘋果電腦公司" 等一行字。
4. 到 control panel 底下 appearance 之 Finder 字型改為 gevena。
5. 開個新檔案夾,將 SimpleText 的那行字拷貝起來並貼上之後再將 Finder 字型改為 Taipei(此時在 finder 下應該是正常中文顯示)。
6. 再開個新檔案夾,用中文輸入法打上“個人中文使用者"。

7. 再檢查一遍,確認這兩個檔案夾都是正常中文顯示。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

8. 用 OS X 開機或將上述兩個檔案夾拿到 OS X 底下看看
9. 結果「美商蘋果電腦公司」出現問題,而「個人中文使用者」反而沒有問題。

亂碼顯示的檔案夾與正常顯示的檔案夾,在 OS 9 底下有人可以分辨他們之間有什麼不同嗎?

[ 11-17-2002: 留言編輯者: macluo ]
頭像
bryanchang
討論區管理員
文章: 7057
註冊時間: 04/19/2001 1:01 am
來自: The '60s
聯繫:

老問題:中文檔名

#12 文章 bryanchang »

其實你說的這些問題,都是在 Unicode 跟 Big-5 之間在剪貼板上轉碼的問題。

TextEdit 是 Cocoa App, 所以只能用 Unicode,而 SimpleText 是 Carbon App,所以除非特別改寫(如 WorldText 這個程式),否則不支援 Unicode。

Mac OS 9 下的 Finder 檔名不是 Unicode,所以會有你所說的亂碼問題,不過就跟我前面所說的一樣,Mac OS X 之前的系統都只能支援雙語,也就是說你在 Finder 下同一個檔案夾裡只能有英文跟另一語文檔名的檔案,但是在可以支援多國語言的 Mac OS X Finder 裡,同一個檔案夾裡可以有超過兩種語言文字的檔案名稱出現。

這兩種設計個有優缺點,所以知道就不會覺得太驚訝了。
頭像
macluo
基本會員
文章: 36
註冊時間: 08/29/2002 1:01 am
來自: iMacCD 電腦前

老問題:中文檔名

#13 文章 macluo »

謝謝 Brian 的回答

unicode 和 big5 轉碼的問題,只要習慣就好了。可是最奇怪的是 實驗二的作法中所產生的兩個中文檔名(兩者都是 big5 碼)。這兩個中文檔名在 OS 9 下面都可以正常顯示,但在 OS X 下其中一個就是會有問題。這個有解嗎?
頭像
bryanchang
討論區管理員
文章: 7057
註冊時間: 04/19/2001 1:01 am
來自: The '60s
聯繫:

老問題:中文檔名

#14 文章 bryanchang »

我只能解「釋」,沒辦法解「決」這個現象:

你在 HFS+ 下產生的檔案名稱應該是有編碼的資料,所以第一個產生的檔案夾雖然用台北字可以看到,但是其實骨子裡是英文 (8-bit) 的資料。

Mac OS 9 下之所以都可以看到,是因為它是用跟 Windows 類似的「雙語」方法強制顯示的;在 Mac OS X 下 Finder 則會乖乖的照語言編碼的指示作顯示,因此第一個檔名是亂碼。
Tim Tam
新生訓練中
文章: 6
註冊時間: 08/28/2001 1:01 am
來自: Australia

老問題:中文檔名

#15 文章 Tim Tam »

If you have 2 Mac computers, you can set up one computer with OSX, the other with OS9 and form a network. Insert the CD with Chinese file names in the computer with OS9 system and access that CD on the other OSX computer with Traditional Chinese encoding. Then you can read all the Chinese file names correctly.
留言五百如一日
文章: 610
註冊時間: 12/25/2001 1:01 am

老問題:中文檔名

#16 文章 »

看大家熱烈的討論,也說幾句:

Mac OS X 的 filesystem 使用 unicode,精細的說是 decomposed Unicode,UTF-16 在 HFS+ 的 volume。

在建立新的檔案或資料夾時,Finder 或 Nav Services 會自動把文字轉為 UTF-8 編碼。但大部份 carbon 程式只會依據系統的語系而編碼。

當系統遇上其他 filesystem 時 (指 mount 或 connect 其他 filesystem),視乎該 volume format 或 filesystem 有否標示其編碼、如無,Finder 會依據系統的語系而編碼。如遇上 UDF 或 SMB,少許問題,因此兩種 filesystem 使用 precomposed Unicode。


依此,推論所似然:

<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>我目前用的是OS X 10.2.2,選的是英文為主要語系。結果

1. 一些以前用OS 9燒的ISO 9660格式CD上面的中文都看不到了。
2. PC上的中文光磁檔名也都亂成一團。<HR></BLOCKQUOTE>

選英文為主要語系,在終端機的指令:echo $LANG
會傳回 en,表示國際設定選用了 English,系統以 Roman 作 encoding。系統認為制式 ISO 9660 的 volume 沒有文字編碼資料,故 Finder 對檔名以 Roman 編碼 ,變成檔名看不到、亂成一團。


<BLOCKQUOTE><font size="1" face="XYZ">quote
如果是燒成 HFS 格式的 CD 可以在 Get Info Window 裡指定檔名的編碼,如此中文檔名就看得到了。
HFS 或 HFS+ 皆可,此動作會 unmount volume,然後觸發 kextload,mount 及 mount_hfs。當中,mount_hfs 可選擇文字編碼。

man mount_hfs 的相關段落:

mount_hfs - mount an HFS/HFS+ file system

-e encoding (standard HFS volumes only)
Specify the Macintosh encoding. The following encodings are sup-
ported:

Arabic, ChineseSimp, ChineseTrad, Croatian, Cyrillic, Greek,
Hebrew, Icelandic, Japanese, Korean, Roman (default), Romanian,
Thai, Turkish

因系統在 mount_hfs 時已依用家的指示選定了文字編碼,故 Finder 能正確顯示中文檔名。


<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>例如說我有一個中文的MP3 folder
上面的中文在Finder下看沒問題
可是一拉到iTune就成了亂碼<HR></BLOCKQUOTE>

因 iTune 為 carbon 程式,依據你系統的語系 (English) 而對檔名 (中文) 以 Roman 編碼,結果可想而知。


終端機的情况較複雜,涉及 shell 及各 shell commands 的版權問題。

最後,安裝了中文字型嗎?
頭像
macluo
基本會員
文章: 36
註冊時間: 08/29/2002 1:01 am
來自: iMacCD 電腦前

老問題:中文檔名

#17 文章 macluo »

<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>原始發信人 白萊恩:
<STRONG>我只能解「釋」,沒辦法解「決」這個現象:

你在 HFS+ 下產生的檔案名稱應該是有編碼的資料,所以第一個產生的檔案夾雖然用台北字可以看到,但是其實骨子裡是英文 (8-bit) 的資料。

</STRONG><HR></BLOCKQUOTE>

請問一下,編碼資料是放在那裡?有辦法看到嗎?我找了所有能檢視 file type, file info, data folk, resource folk 以及 Hex Editor 的程式。得到的結論是編碼資料不在檔案或檔案夾上面,難道是在 Desktop DB 或 Desktop DF 或另有別處?
Tim Tam
新生訓練中
文章: 6
註冊時間: 08/28/2001 1:01 am
來自: Australia

老問題:中文檔名

#18 文章 Tim Tam »

Another better way is to select your CD, press command i to get info and select Tradition Chinese for encoding. This will display the Chinese file names correctly.
留言五百如一日
文章: 610
註冊時間: 12/25/2001 1:01 am

老問題:中文檔名

#19 文章 »

<BLOCKQUOTE><font size="1" face="XYZ">quote
請問一下,編碼資料是放在那裡?有辦法看到嗎?我找了所有能檢視 file type, file info, data folk, resource folk 以及 Hex Editor 的程式。得到的結論是編碼資料不在檔案或檔案夾上面,難道是在 Desktop DB 或 Desktop DF 或另有別處?

短說:

眾裡尋它,編碼的資料就在文字裡。

長話:

OS 9 或前的系統,檔案或檔案夾的名稱是 styled text。意指名稱內含文字 ( ktxt 的部份 ),而 ksty 的部份則包含了字型,字體大小及風格如粗體、斜體及顏色等。重要的是,ksty 的字型資料暗地裡指示了編碼。

如何看?小弟沒用 OS 9 很久,以下是在 Jaguar 的示範:

用 Script Editor,執行以下指令

set theString to name of (info for (choose folder))
get «class ksty» of (theString as record)

傳回

<<data styl0001000000000010000E40000000000C000000000000>>

此乃 raw apple event,如何解讀,下回分解。
yzhuang
留言破百
文章: 124
註冊時間: 05/02/2001 1:01 am
來自: Taipei/Taiwan

老問題:中文檔名

#20 文章 yzhuang »

謝謝大家的熱烈討論,雖然結論應是無解,不過還是很有幫助。

在幾經試驗,這和我在OS X上選什麼語系無關。因為切到中文也是一樣。應該還是白老板所說的Big 5和Unicode的問題。
回覆文章