#
自從TGV東線開通之后,每天都有4班德國高鐵的ICE列車往返于巴黎東站與德國法蘭克福和斯圖加特。Rene很少去那個角落,也就一直無緣目睹德國ICE的尊容。這次姐夫來法國出差,正好要從東站出發去Strasbourg。無意中發現了停在我們旁邊的ICE,雪白的車身、流線型的車頭還有車身上的ICE,以及德國高鐵在車頭的標志都顯出了一種高貴。這點連旁邊TGV Duplex的最新款都比不上。只可惜身邊沒有帶相機,只能用手機湊合一下了……
ICE@Paris Gare de l'Est
Originally uploaded by Rene ZHU
星期五用了一天RTT,去了中國使館拿到了新護照。這次換護照還算是順利,無論是上個月22號去交材料,還是這次去取件。收了45€,還算是比較貴的,如果和在國內換的話。原來的護照有效期是5年,這次換了10年有效的。
想想5年前,辦護照的時候,Rene還在上海,連出國的眉目還沒有理清。5年后的今天,已經在巴黎工作了一年多了。那么10年之后呢?我會在哪里換護照?上海還是巴黎?仰或是其他某個城市。
接下來又要去Préfecture排隊換居留了……
小時候剛開始學程序設計的時候就為了中文編碼而頭痛,尤其是做JSP的時候。不是頁面顯示不對,就是參數獲取上有問題。記得經常和Vincent兩個人很快把程序架構寫好后,要為了字符編碼問題忙上好久。
在第一次飛法國的飛機上就想過,終于可以不用為了編碼而困擾了。工作后,公司的項目都是英、法、德三種語言,沒有超越Latin1字符集。默認的工作環境也是ISO-8859-1編碼集。一年多以來,倒也是相安無事。
最近,開始了一個新項目。不算很大的工作量,也沒有什么陌生的技術,一開始進展很是順利。但是在實際測試時發現了問題,就是表單數據的字符編碼。這個項目有兩個版本,羅馬尼亞語和土耳其語。這兩種語言都超越了西歐Latin1字符集,卻又分屬于ISO-8859-2和ISO-8859-9兩個不同的編碼集。
其實完全可以全部用UTF-8編碼了事。但是公司的Tomcat和MySQL全局環境都顯式配置為ISO-8859-1,而且在龐大的底層程序中有好幾處都硬編碼成Latin1。更改全局配置是不可能的,也不想冒極大的風險來修改底層類。
最后完全迷失于編碼轉換中……很神奇的是沒有亂碼出現。Latin1以外的字符被轉換成HTML格式編碼了。所以就用了很惡心的方法,把讀入的表單數據從8859-1讀入轉換成UTF-8(HTML <-> UTF是很容易的)后再轉成8859-2/9顯示(由于客戶方終端不支持UTF-8方案,不能直接用輸出Unicode)。盡管8859-1編碼集不支持Latin1字符集以外的字符,但是這層轉換的內部處理還是通過Unicode,不存在信息丟失問題。說白了就是UTF-8 -> ISO。
不過數據庫中的數據卻始終無法正常存儲。數據永遠以亂碼讀出,而且無法轉換。奇怪的是,如果把控制臺編碼換成8859-2/9的話,可以在數據庫中看到正確的數據。但是運行
SELECT HEX(column) FROM table
得到的結果卻是錯誤的。獲得的十六進制編碼是信息經過
8859-1編碼后的Unicode值。這個問題涉及到系統底層類,數據庫配置等多個方面。Rene甚至不知道在數據庫中貯存的到底是什么。
最后的理解是這樣的,底層接口類把數據轉換成8859-1編碼存入數據庫,同樣也以8859-1讀出。SQL請求以字節流返回,這也說明了在控制臺下可以用8859-2/9編碼看到正確結果。但是中間結果由于全局配置的關系,被編碼成8859-1,所以顯示的Unicode值不對。在程序中,由于數據取出后被強制轉換成8859-1編碼,所以造成了信息丟失。就再也找不回Latin1以外的字符了。
最終的解決方案,讓Rene惡心到可以從Montparnasse上跳下來。由于數據在存入數據庫前是正確的,其實在存入時也是正確的。所以打算在存入前,把信息轉成十六進制編碼。理論上應該是可行的,就是會很難看,非常非常難看。
天氣開始轉涼了,今年比去年冷得早些,還沒到供暖的日子。巴黎的勞苦大眾們就紛紛走上大街活動一下有些凍僵的身子。早上到火車站,老遠看到月臺上站滿了人,心中就開始有些不安起來。沒想到這么早就開始了……看到屏幕上一排Supprimé,終于確信SNCF開始罷工了。車不是很少,因為明天才正式開始。但是很擠,也很慢。從Val d’Argenteuil到巴黎原本20分鐘的路程,大約用了快40分。到Paris St. Lazare那段幾乎就是在挪動,因為車站沒有地方停車:(沒有趕上08h46的快車,只好坐后一班站站停的慢車。
窗外風景不錯,早晨的太陽躲在鐵塔后邊,一縷縷晨曦灑在河水上。過了La Défence,就從Mont Valérien上走了,可以俯瞰整個市區,直到蒙馬特高地上的圣心。整個巴黎大致是平的,鐵塔高高矗立在那里,是個很不錯的地標。熟悉方位的話,依稀可以辨別出凱旋門還有榮軍院。當然,還有Monparnasse大樓,像座墓碑一般插在那里,大煞風景。
明天罷工繼續,盡管這次只有3家工會參加,但是Rene的線路全部影響到。準備早些去公司,早些回家。一定要趕上18h43的那趟車,否則就會很慘了。SNCF之后會是哪個呢?估計RATP會很快響應的吧。希望這次不要像去年年底那樣持續1個月就好了。坐St. Lazare這條線的人還真是苦,每次都會影響到~~
盡管歐洲央行決定維持原有的指導利率不變,但是法國政府依舊下調了A本儲蓄(Livret A)的利率,由第二季度的1.75%下調至1.25%。各銀行的其他短期金融產品利率也紛紛下降:
可持續發展儲蓄(Livret de Développement Durable):1.75% -> 1.25%
大眾儲蓄(Livret d’Epargne Populaire):2.25% -> 1.75%
LCL的普通儲蓄賬戶(Compte sur Livret):1.25% -> 1%
ING的橙色儲蓄賬戶(Livret Epargne Orange):2.25% -> 2%
先要為馬薩祝福,趕快康復。F1今年的規則變動太大,工作后也實在沒有精力去仔細研究。慢慢地也就不看比賽了。但是心里還是關心著的。
晚上看新聞,在馬薩缺席的這段時間,Shumi又要回來了。很詫異Ferrari的決策,按常理應該是選擇Badoer。Shumi無論是年齡還是對車以及新規則的熟悉程度都不占優勢。Rene對于賽季后段的成績并沒有大的期待。不過Shumi以40歲的年齡回歸本身已經是奇跡了。
新加坡的夜戰應該還是很有看頭的,對于每個人都是新的環境、新的賽道。時間對于Shumi還是有利的,夏季休賽的三周正好可以用來恢復體能,熟悉新賽車的性能與調教。也許要放棄休假,德國人應該是能夠做到的,幸好不是法國人J
8月23號歐洲站,西班牙瓦倫西亞賽道,又要開始看比賽了……
SimpleDateFormat是一個很好用的日期轉換工具類。使用它,開發者可以很方便地按照預先定義的格式在字符串和Date對象間轉換。Rene在工作中也經常用到它。平時遇到的日期格式大多為dd/MM/yyyy的歐洲標準短格式,沒有什么太多好注意的地方。
但是有時也會遇到長格式(Mon, 07/26/2009 09:00:00 +0200),其實就是星期的中長度格式表達,中長度格式日期 時區。那么日期描述字符串就是EEE, dd/MM/yyyy HH:mm:ss Z。
說了那么多還沒有進入重點。問題是運行時總是報解析錯誤異常。反復檢查日期描述字符串,確認是正確的。突然想到是Locale的問題。由于在法國工作,Locale的默認設置當然是法語法國,問題就來了。在法語中星期一(Lundi)的短格式表達是Lun,用它來解析英語的Mon(Monday)當然是錯誤的。這個時候就需要在初始化SimpleDateFormat對象的時候,設置一下Locale值,對于Rene的情況,改成Locale.UK就可以了。不知道在中國會不會也有相同的情況呢?
平時還是短格式用的多些。突然遇上長格式一時會不注意,切記,切記~~
40年前,3個人在幾千名同類的幫助下離開地球,成功登陸月球并安全返回。40年后的今天,人類依舊生活在地球上……
摘要: 隔了一天的9月19日,6點剛過出門,6點半就到préfecture開始排隊,這次終于拿到票子了。當時情況挺緊急的,第一個CDD按原來居留時間簽的,到10月底到期,RCPC只到12月。這樣第二個CDD也只能到12月。老板的意思是希望我可以去重新換個期限長點的RCPC,這樣就可以簽個時限長些的CDD直至轉身份結束?;卮鹗荲al de Marne(94)的Préfecture。春節那天是1月26號,休了一天RTT,又一次準時出現在了Préfecture門前的長龍隊伍里。還問我要了工作許可做復印,覺得很奇怪,按理說Préfecture自己應該會收到一個副本的。一周后的2月27號,又去Préfecture交體檢證明?;氐絇réfecture交了體檢證明,又問我要了ANAEM蓋章的格式合同復印,之后開始新一輪的等待。到了4月21號,一直都沒有消息,RCPC再次臨近過期,就又去了Préfecture排隊。寫了Salarié,電腦工程師,工作地點是整個法國本土。信上的日期是4月6號,不過Préfecture每月底寄一次通知,害我多等了將近一個月。
閱讀全文