none
請問,從資料庫中讀取的造字在程式中,是否能取得其內碼值? RRS feed

  • 問題

  • 使用的是Oracle,字元集設定是Big5,例如姓名(name)欄位中有一筆資料其中一個字為造字,其內碼是FEC7,目前讀取出來的會變如:林淑?。

    也就是那個造字會變成"?",想請問一下,是否有方法可以取得這個造字的內碼也就是FEC7呢?

    ps:若是發問的地方不對再請告知,謝謝!!

    • 已移動 阿尼 2011年11月3日 上午 07:30 (從:ASP.NET 與 AJAX(ASP.NET and AJAX))
    2011年11月3日 上午 04:18

所有回覆

  • 您參考一下,JSP+Oracle 中文造字顯示問題解決

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已編輯 亂馬客 2011年11月3日 上午 05:25
    2011年11月3日 上午 05:16
  • 對不起,我想要的並不是正常在網頁上顯示,而是希望能取得那個造字的內碼,只是在程式中,那個造字會變成口,而變成byte或是用big5去取,不是會變成單byte,就是會變成?號,有想過直接從資料庫部份取得,可是,問題若是欄位是中英數混雜時,不知道怎麼分割字串來識別,所以想請問看看各位先進是否有方法可以取得這部份資料呢??
    2011年11月3日 上午 05:57
  • 您可以試一下 ASCIISTR 這個function。

    SELECT  ASCIISTR(''), ASCIISTR(''), ASCIISTR('') FROM DUAL;
    FA40=>\E000
    FA41=>\E001
    FA50=>\E010

    Unicode 2.0 Private Use Area

     

    Unicode 2.0 reserves the range 0xE000-0xF8FF for the Private Use Area (PUA). The PUA is intended for private use character definition by end users or vendors.

    UDC can be converted between two Oracle character sets by using Unicode 2.0 PUA as the intermediate form as same as standard characters.


     

    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已編輯 亂馬客 2011年11月3日 上午 08:50
    • 已提議為解答 小朱MVP, Moderator 2011年11月3日 上午 09:12
    • 已取消提議為解答 Thinker 2012年5月18日 上午 05:45
    • 已提議為解答 KKBruceMVP 2012年5月24日 上午 01:42
    2011年11月3日 上午 08:43
  • 抱歉~不太懂您的意思,有點才疏學淺,查了一下,ASCIISTR()是有幫助找出是否有亂碼,因為資料庫裡,只要是造字的都會一樣,但是這樣還是無法分辨那些難字真正的內碼。
    2011年11月3日 上午 09:02
  • 請問您是要找出內碼對吧!
    所以如果您用ASCIISTR找出來的在E000-F8FF之間的話,應該都是您的自造字吧!

    不知這樣是否符合您的需求?


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年11月3日 上午 10:29
  • 抱歉~有時一忙都忘了自己問取的問題,剛按了取消建議為解答,原因是覺得我是希望在從資料庫中select出來的資料中就能分析出來,而非知道某一難字而去找出對應的內碼(兩者解析方向剛好相反),因為資料庫為Big5,而前端程式目前顯示為utf8,所以根本無法識別那個難字為何,而後來我自己處理的方式比較笨,就是用byte值去比對,而且像公司造字區是三個區段,所以就是每個字都先做過濾再比對,是很笨而且沒有效率的方式,可是目前還沒辦法去更深入了解相關的資訊和方式,所以先用此方式頂著用先。

    ps:若是取消的動作有任何不對之處,再請小朱大大見諒,並再協助處理,感恩!!

    2012年5月18日 上午 05:57
  • 您好,

    如果是用INSTR去找的話,不知是否符合您的需求呢? 如下,

    select * from [YOURTable]
    where  instr(asciistr([你要找的欄位]), '\E', 1) > 0


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年5月18日 上午 10:00
  • 抱歉~我有試過,可是並未找到任何資料,

    select * from em where instr(asciistr(emp_name)), '\E',1) > 0

    2012年5月22日 上午 01:21
  • 請問您的自造字 asciistr([你的自造字]) 出來的值是什麼呢?

    用以下的WHERE也找不到?

    where  instr(asciistr([你要找的欄位]), '\E', 1) > 0 OR instr(asciistr([你要找的欄位]), '\F', 1) > 0


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年5月22日 上午 02:59
  • 值是\F ,只是出來的值並非像亂馬客大大那樣每個字都有自己的字碼

      1* SELECT  ASCIISTR(''), ASCIISTR(''), ASCIISTR('') FROM DUAL
    14:28:58 >/

    ASCII ASCII ASCII
    ----- ----- -----
    \FFFD \FFFD \FFFD

    突然發現,因為工具不同,結果不同,上面是使用SQL PLus執行結果,下面是用Oracle SQL Developer!!

    \FF1F \FF1F \FF1F

    • 已編輯 Thinker 2012年5月22日 上午 06:37
    2012年5月22日 上午 06:34
  • 那用

    where  instr(asciistr([你要找的欄位]), '\E', 1) > 0 OR instr(asciistr([你要找的欄位]), '\F', 1) > 0

    應該可以找得出來那些自造字吧!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年5月23日 上午 05:17
  • 這個sql語法,只能找出那些欄位可能含有造字~但是卻無法找出有那些造字~

    因為每一個造字出來的其實都是同一個碼,而且依所測的,不同工具同一資料庫

    為什麼出來的會不一樣的碼,如之前所述,同一個sql,得到的\FFFD和\FF1F,

    說真的得到這種資料,讓人覺得不太安心,不知道會不會有其它可能會遺漏或是

    錯誤的發生。

    其實是真的滿想知道是否能夠有直接正確找出對應字碼的方式,不然就只能依目前

    的方式,將資料逐字拆解、比對後,得到結果,感覺這種方式真的效率有差。尤其

    是資料欄位和資料量大時,尤其我們公司的造字又分在三個不同區段。

    2012年5月24日 上午 01:32
  • 的確如此,

    不過,自造字區在\E ~ \F之間應該是確定的!

    再來就是如何將這些含有自造字的字串給Parse出來!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年5月24日 上午 03:01
  • 我們家的造字區現在有四個了....

    FXXX、8EXX、81XX、C6XX.....這種東西覺得真的很麻煩~~

    而且政府對這一塊的努力似乎還是不足...唉

    2012年5月24日 上午 05:19
  • 我們家的造字區現在有四個了....

    FXXX、8EXX、81XX、C6XX.....這種東西覺得真的很麻煩~~

    而且政府對這一塊的努力似乎還是不足...唉

    看不懂。

    行政院研考會遵循國際標準 Unicode 的字碼在:

    http://www.cns11643.gov.tw/AIDB/welcome.do

    已經更新到 Unicode 5.2 ,比 Win7 內建的還新,實在看不懂這邊關政府啥事...


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年5月24日 下午 01:11
  • TO 心冷熱情熄:主要是覺得政府當初外包,請廠商建置這些機制,那應該可以直接目前所有姓名中需造字的姓名一次做完處理,並不斷更新及提供,且這部份接觸當初接案廠商,其實在網頁方面的應用處理,還是無法很平順的在各瀏覽器中應用,讓人老是覺得政府做這類機制都是花錢做了以後,後續的一些實際應用和考量有時都不太建全!!
    2012年6月1日 上午 03:10
  • 因為你要用 big5 ,最多只有 big5E 可以用,而且一下就滿了,這是 Big5 先天規格缺陷。

    所以核心解決方案是回去用 Unicode ,就沒有跨瀏覽器的問題,現在各家的瀏覽器都支援 Unicode 。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年6月1日 下午 04:42