Browse by Tags

Coding4Fun - 點陣中文字型顯示
因緣巧合,最近剛好需要處理中文點陣字型。 在DOS+倚天中文的古早年代,曾經用BASICA寫過解析倚天中文字型檔的程式,沒想到二十多年後居然還有機會重新回味,只是這回手上的兵器已由當年的BASICA小開山刀,換成C#加農砲,語言特性已不可同日而言、自己的程式技巧也遠比當年成熟,對照起來格外有趣。 時代演進大大地改變了寫程式的方法,當年要自己瞎摸亂湊好一陣子才能拼湊出檔案規格,現在稍稍爬文就能找到網友的熱心分享: 倚天中文字型檔結構說明 (倚天中文系統雖已不再販售,但要正式應用仍需取得字型檔授權)...
【茶包射手日記】.NET主控台應用程式出現"系統無法執行指定的程式"錯誤
同事報案,某支排程作業主控台應用程式(Console Application)忽然無法執行,持續出現: The system cannot execute the specified program. 系統無法執行指定的程式 爬文發現此訊息大多與 缺少VC++ DLL 有關,但這是支.NET程式,加上原本可以執行,必要DLL忽然消失的可能不高,推測應另有原因。 試著直接由檔案總管點選exe執行,蒐集更詳細的訊息。登楞! 凶手的背影出現了~~ 訊息指出是config檔有問題,同事此時也出來補刀--"的確是修改過config後才壞的"...
TIPS-製作固定欄寬資料檔
昨天小談了 固定欄寬資料檔解析 程式的寫法,有人問到解析之餘要如何產生固定欄寬資料,並提了一些常見 但有點機車 的需求,例如: 針對數字欄位要能指定數值靠右左方補零(不知為什麼,某些"阿公"很愛用這種不補空白要補零的規格,每次要肉眼除錯時,十來個數字欄位夾雜零零相連到天邊,數位置數到眼睛都快出血了)、文字過長要能自動截切,還要避免切成半個中文字... 禁不住這團機車小需求的刺激,忽然一陣熱血衝腦... 待神智恢復時,發現自己端坐在電腦前,VS2010開啟中的專案有一段小程式....
Posted 25 February 2012 10:36 PMJeffrey | with no comments 4,789
Filed under: , ,
TIPS-固定欄寬資料檔的解析
跟傳統系統打交道時,XML、JSON等格式多半無用武之地,往往得透過"固定欄寬資料格式"進行資料交換。 在撰寫程式解析固定欄寬資料時,有幾點注意事項: 欄位寬度計算與中文編碼有關,實務上使用BIG5編碼還是大宗(阿公級系統很少能支援Unicode)。 BIG5編碼中,半形英數字佔一個Byte,全形符號及中文佔兩個Byte,欄寬規格書中CHAR(n),n多指Bytes,所以計算長度時,需把握中文算2或英數字算1的原則。 建議不要再用比對第一個Byte ASCII的方法自己判別全半形...
CODE-配合VARCHAR長度截取字串
專案裡遇到的特殊需求,有個欄位在程式內部採用Unicode編碼,但要匯出給某個系統接收時,中介資料表卻制定了採Big5編碼的VARCHAR(50)格式,這意味著: 1) Big5編碼的中文字元相當於VARCHAR(2),長度限制應為25個Unicode中文字元 2) 包含Unicode的字串在轉換後將變成"?" 原本系統採保守策略,把輸入欄位的長度限定在25個字元,不過客戶反應輸入內容常中英文交雜,英文字元也被視為2個Byte(在VARCHAR其實只佔1個Byte),讓可用字數變少...
Posted 05 July 2011 08:03 AMJeffrey | 3 comment(s) 11,052
Filed under: ,
CultureInfo與中文字串排序
同事反應一個問題,有段程式使用LINQ的OrderBy排序一串中文名稱,在不同主機得到不同結果: string [] pool = "一 二 三 四 五 六 七 到 底 排 成 啥 順 序" .Split( ' ' ); Response.Write( string .Join( "," , pool.OrderBy(o => o).ToArray())); Response.End(); 一般來說,我們期望它依筆畫多寡排序,如以下順序...
Posted 16 February 2011 05:51 PMJeffrey | with no comments 5,993
Filed under: ,
讓OracleCommand.CommandText中N'...'正確被解讀
今天是值得紀念的一天!! 多年以來,我 一直以為 在非Unicode編碼ORACLE資料庫中正確塞入難字的唯一方法,只能透過OracleParameter... 手上有個應用,我寫的.NET程式要接收其他程式傳來的CommandText執行,而其中包含以N'...'方式新增難字內容的指令。無力改變這個協同運作方式,只能被逼著要解開這個謎團---到底要怎樣才能讓N'...'的難字正確送到ORACLE上執行呢? 不抱太大希望地在網路爬文,大概是多年來為了ORACLE Unicode問題煞費苦心孝感動天...
CODE-將地址中的阿拉伯數字轉為中文大寫
前幾天同事討論到要將地址資料中的阿拉伯數字都轉成中文大寫(一二三四...),我想起了前些時候看到的 Microsoft Visual Studio International Feature Pack 2.0 就內建了數字轉中文大寫的功能,試作如下。 程式主要是用Regex去比對出數字(\d+)的部分,逐一換成中文大寫。而更換時我用算位置的方法而不直接用Replace,以免把"12弄123號"搞成"十二弄十二3號";也因為要算位置,加上每次更換完字串長度可能會改變...
TIPS-用ADO.NET寫入BIG5罕用字到ORACLE VARCHAR
上回我們破解過" 用ADO.NET讀取ORACLE VARCHAR中的BIG5罕用字 ",今天又有人出了難題--如何將BIG5罕用字寫入ORACLE VARCHAR2欄位? 經實驗,單純用cmd.Parameters.Add("param", OracleType.VarChar).Value="含罕用字/造字的字串",則所有的罕字與造字在資料表中會變成問號。我猜與讀取時面對的問題完全相同,資料從網路接收到OracleClient解析完成的過程中...
KB-UTF8Encoding And BOM
static void TestXMLWriter() { MemoryStream ms = new MemoryStream(); XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8); xtw.Formatting = Formatting.Indented; XmlDocument xd = new XmlDocument(); xd.LoadXml( "<Group><User>Jeffrey</User><...
Posted 31 October 2007 12:39 AMJeffrey | with no comments 13,094
Filed under: , ,

搜尋

Go

<May 2017>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication