27/06/2005

文字與 Unicode 脫逸序列碼雙向轉換

因為之前介紹過透過 Javascript 產生 Unicode 脫逸序列的方法。後來有網友又問道如何再將這 Unicode 序列轉回字串,我將解答公佈於下,有興趣的朋友自己試試囉!

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
<script language=javascript>
<!--
function StringToUniCode(source) {
  sret = "";
  // Unicode 跳脫序列之格式為 u00ff
  for(var i=0; i < source.length; i++) {
     var num = new Number( source.charCodeAt(i));
     sret += "\u" + num.toString(16);
  }
  return sret;
}
function UniCodeToString(source) {
  var codeAry = source.split("\u");
  var sret = "";

  for(var i=0; i < codeAry.length; i++) {
    if(codeAry[i]=="")
      continue;
    sret += String.fromCharCode("0x" + codeAry[i]);
  }
  return sret;
}

//-->
</script>
將文字轉成 Unicode 跳脫序列
<form name=content>
來源:<input type=TEXT name=source size=40 value="常用連絡人"><br>
結果:<input type=TEXT name=result size=40><br>
<input type=button value="轉換成Unicode" onclick=
  "document.forms.content.result.value = StringToUniCode(document.forms.content.source.value)">
<input type=button value="轉換回文字" onclick=
  "alert(UniCodeToString(document.forms.content.result.value))">
</form>

13/11/2004

Unicode 脫逸序列轉換

這裡提供一段程式碼,可以透過 JavaScript 將文字轉換為 Unicode 脫逸序列。這段程式碼,不論是對網頁開發人員,還是對 java resource bundle 的翻譯人員,都有很大的方便性。使用時只要將底下的程式碼複製起來,以 html 副檔名儲存,就可以用 browser 執行了。

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
<script language=javascript>
<!--
function StringToUniCode(source) {
  sret = "";
  // Unicode 跳脫序列之格式為 u00ff
  for(var i=0; i < source.length; i++) {
     var num = new Number( source.charCodeAt(i));
     sret += "\u" + num.toString(16);
  }
  return sret;
}
function convert(){
    document.forms.content.result.value
        = StringToUniCode(document.forms.content.source.value);
}
//-->
</script>
將文字轉成 Unicode 跳脫序列
<form name=content>
來源:<input type=TEXT name=source size=40 value="常用連絡人"><br>
結果:<input type=TEXT name=result size=40><br>
<input type=button value=轉換 onclick="convert()">

13/10/2004

Database: MySQL 轉碼小技巧

假設原本將 MySQL 的資料庫編碼設為 big5 (也就是 my.ini 或 my.cnf 中的 [mysqld] 中有一行 default-character-set = big5)。之後因為多國語言的需要(或其他原因[1]), 想要更改為其他編碼(如 UTF-8),這裡提供一個小技巧:

我想程式語言裡面,同時對資料庫及多國語系支源最好的,莫過於 Java 了。因此解決方式就是,找到一個 Java 所寫的 utility,利用 JDBC,執行資料庫的匯出/匯入,或是直接資料庫對拷。由於MySQL 的 JDBC driver 內建語系轉換的功能,因此若資料庫 A 與 B 的語系不同,當我們將一個資料由 A 拷至 B 時,語系轉換也就自然完成了。

example2_small 幾經搜尋與測試後,終於找到一個 Eclipse 的 plug-in DB Copy,雖然這個 utility 介面相當陽春,且還在 Beta 階段,但它的確解決了我的問題。

[1] 好吧,為什麼不用 default-character-set = big5 的原因還有一個,就是當我如此設定時,我發現中文檔案上傳有問題。尤其是 PowerPoint 與 Word 之類的文件,10 個檔案可能有 9 個在上傳時無法成功 update 至 MySQL。這是我在 Tomcat+JSP+MySQL 所發生的問題,別種情況會不會,我就不知了。