← 文章列表

台灣特有的注音亂碼 su3cl3a87:你還在自己切換中英文嗎?

忘了切換輸入法,「你好嗎」變成 su3cl3a87。這篇談為什麼「記得先切換」永遠會忘,以及有沒有不用切的辦法。

su3cl3a87

你認得這串東西,因為你打過。輸入法還停在英文,你想寫的「你好嗎」變成九個字元原封不動送進文件裡,要退九下才刪得乾淨。打的是一整句中文的話,那就是幾十下。

反過來也會發生,只是好救一點。忘了切成英文,hello 打出來是一串注音符號;不過注音一次只組一個音節,後面的會蓋掉前面的,五個鍵打完畫面上只剩 ㄍㄟ,退兩下就沒了。

問題不是不知道要切

處理這件事的標準答案是:打英文之前按 Caps Lock 或切到 ABC,打完再切回來。

沒有人不知道這件事。是你打字的時候正在想句子怎麼寫,不是在想現在是哪個模式。而且切換是雙向的,切過去會忘,切回來也會忘,忘了切回中文,就是開頭那串 su3cl3a87

現在的工作內容又特別容易踩到,一句話裡夾產品名稱、技術名詞、專案代號、同事的英文名字:

今天 review onboarding flow,下午再跟 Jason 確認 API 文件。

這句話不長,用傳統方式打完要切換四次。

還有全形這一種

Mac 注音輸入法還會在另一個地方咬你一口。字元是對的,寬度不對:

100% ABC

規則是這樣:在注音狀態下按住 Shift 打數字或標點,出來的是全形。 你想打 100%,按 Shift 打 %,得到的是 %。英文字母也有對應的全形版本,ABC 會變成 ABC。想要半形就得切回英文輸入法再打,打完再切回來,於是又多一次切換。

全形字元在中文排版裡看起來還好,貼進網址列、表單欄位或程式碼就會出事。系統認不得它們,肉眼又很難第一時間看出差別,通常要等到送出失敗才發現是寬度的問題。

不用切的辦法

讓輸入法自己判斷。這是我做 ZingIME 晶晶輸入法的原因。

判斷的依據是注音有規則,不是任何一串符號都能成字。台灣通用的大千鍵盤把每顆字母鍵對到一個注音符號,hello 的前兩個鍵是這樣:

你按的鍵對到的注音
h
e

ㄘ 和 ㄍ 都是聲母,中文沒有兩個聲母連在一起的音節。所以打到第二個字母,輸入法已經可以確定這串按鍵不是中文,後面你怎麼打都當英文處理。

不確定的時候就兩條路都留著。例如 su,它可以是 ㄋㄧ(接個聲調就是「你」),也可以是 suchsuresunday 的開頭:

鍵入 su 時,浮動視窗上行顯示英文預測 such、下行顯示注音 ㄋㄧ
上行是英文預測,下行是還能成字的注音。兩條路都還通的時候,兩個都顯示

決定權留給下一個按鍵:

打到 qu 時兩條路都還通(ㄆㄧ 可以是「批」),所以英文預測留在上面;按 Tab 就等於選了英文那條

全形那條也一起處理掉了。英文和數字後面的標點自動用半形,中文情境維持全形,你不需要記得現在該是哪一種。真的想要鍵盤上印的那個字元本身,按住 Option 再按那顆鍵就是了,不必為了一個 % 切兩次輸入法。

最後

su3cl3a87 不是嚴重的錯誤,刪掉重打就好。它煩的地方在於次數:一件三五秒的事,一天幾十次,而且每一次都打斷你正在想的那句話。

輸入法本來就看得到你按的每一顆鍵。你按了 h 然後按 e,它其實有足夠的資訊知道這不可能是中文。既然如此,為什麼還要你先告訴它?

這件事講再多都不如自己打一句試試看。ZingIME 有 14 天完整試用,拿你今天真的要寫的訊息去打,一分鐘就知道合不合用。