最近做了一個匯出 csv 的功能, 一般的情況下手機都是數字 0 開頭, 例如: 09xx-xxx-xxx 但是用 Excel 開啟後該欄位的0 會被Excel 刪掉, 剩下 9xx-xxx-xxx 以前的解法是增加一個單引號為起始符號, 這個解法目前也還可以用, 但單引號也會一起出來, 變的不好看也很奇怪, 由於是要匯給 Excel 所以就透過公式的等號(=) 來解決, csv 內容如下:
再透過 Excel 開啟, 就可以看到漂亮的數字0 了, 感動ing.
2012年5月21日 星期一
Asp 中強迫輸出 BOM 字元的方式
做了一個匯出資料的功能, 但產生出來的 Utf-8 編碼 csv 檔, 用 Excel 檔開啟都會是亂碼, 他應該是誤以為是 ANSI 格式, 這次的目的是要讓 Excel 正常開啟 Utf-8 編碼 csv 檔.
如果是 asp.net 的話可以透過:
來產生, utf-8 識別用的(BOM)字元.
如果是 php 的話, 就是:
fwrite($fp, "\xEF\xBB\xBF".$output)
如果是 asp 的話, 可以透過下列的函數來丟出 BOM 字元,
sub SendHex(valHex)
for cHex = 1 to Len(valHex) step 2
Response.BinaryWrite ChrB(CByte("&H" & Mid(valHex,cHex,2)))
next
end sub
我比較建議使用下面這個方法:
Response.CodePage = 65001
Response.BinaryWrite(chrb(239))
Response.BinaryWrite(chrb(187))
Response.BinaryWrite(chrb(191))
如果是 asp.net 的話可以透過:
protected void Page_PreRender(object sender, EventArgs e) { Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF }); }
來產生, utf-8 識別用的(BOM)字元.
如果是 php 的話, 就是:
fwrite($fp, "\xEF\xBB\xBF".$output)
如果是 asp 的話, 可以透過下列的函數來丟出 BOM 字元,
sub SendHex(valHex)
for cHex = 1 to Len(valHex) step 2
Response.BinaryWrite ChrB(CByte("&H" & Mid(valHex,cHex,2)))
next
end sub
我比較建議使用下面這個方法:
Response.CodePage = 65001
Response.BinaryWrite(chrb(239))
Response.BinaryWrite(chrb(187))
Response.BinaryWrite(chrb(191))
另一個解法是透過 Server.CreateObject("ADODB.Stream") 物件來增加(或移除) BOM 字元, 參考看看: http://www.andmm.cn/post/48.html
我是透過ADODB.Stream 來處理, 最後用 Excel 開啟 csv 檔就正常了.
2012年5月11日 星期五
java 雞婆的合併tag 造成畫面跑版
雞婆的 java 的 xsl 處理時, 自動合併 tag, <noscritp></noscritp> 合併成 <noscript /> , html 畫面如下:
說明: 在 noscript tag 之後都東西, 通通算在 noscript 裡, 所以瀏覽器就通通看不到東西, 當然我覺得這個瀏覽器真笨, 目前 google chrome 20.0 + firefox v13.0 + ie 8 通通顯示不出來, 都是笨笨的瀏覽器.
發生的原因 如下:
說明: 因為 if ... 到 /xsl:if 不成立.
解決辦法: 增加 在 noscript 區塊裡, 讓 noscript tag 不會自動被合併.
說明: 在 noscript tag 之後都東西, 通通算在 noscript 裡, 所以瀏覽器就通通看不到東西, 當然我覺得這個瀏覽器真笨, 目前 google chrome 20.0 + firefox v13.0 + ie 8 通通顯示不出來, 都是笨笨的瀏覽器.
發生的原因 如下:
說明: 因為 if ... 到 /xsl:if 不成立.
解決辦法: 增加 在 noscript 區塊裡, 讓 noscript tag 不會自動被合併.
2012年5月9日 星期三
java 雞婆的合併tag 造成css 或 script 相容性上的問題
前陣子做的好 google map, 如下圖, 系統分析師今天反應有一個 block 消失了, 我檢查一下 html 元素, 真的被蓋過去了.
說明: 右上方有一個透明的橘色區塊, 被 google map 蓋過去.
我先挑戰在這個 block 增加 css style="clear:both;" 一樣無解, 只好求助UI設計大師 Anita, 調了很久也弄不出所以然, 最後 Anita 發現問題在這一個 block 被包含在 google map 的 div tag 裡, 終於找到發生的原因就是 JSP 在處理 xsl 時, 把
合併成一個
說明: 右上方有一個透明的橘色區塊, 被 google map 蓋過去.
我先挑戰在這個 block 增加 css style="clear:both;" 一樣無解, 只好求助UI設計大師 Anita, 調了很久也弄不出所以然, 最後 Anita 發現問題在這一個 block 被包含在 google map 的 div tag 裡, 終於找到發生的原因就是 JSP 在處理 xsl 時, 把
取得 google map 的坐標方法2
不知為何, google map API 輸入地址都會定到錯誤的地點, 所以改使用坐標來定位, 取得google map 定位點坐標(latitude + longitude)的方法之一參考看看下列3個步驟.
步驟1: 在 google map 上任何一個地方按右鍵, 選取 "這裡有什麼?" 按完之後畫面就會多出一個綠色小箭頭.
步驟2: 滑鼠移到(on mouse over) 產生出來的綠色小箭頭就會看到坐標.
步驟3: 點一下(on click) 產生出來的綠色小箭頭, 就會彈出這個對話框, 裡頭有街景和坐標.
步驟1: 在 google map 上任何一個地方按右鍵, 選取 "這裡有什麼?" 按完之後畫面就會多出一個綠色小箭頭.
步驟2: 滑鼠移到(on mouse over) 產生出來的綠色小箭頭就會看到坐標.
步驟3: 點一下(on click) 產生出來的綠色小箭頭, 就會彈出這個對話框, 裡頭有街景和坐標.
取得google map 定位點坐標(latitude + longitude)的方法之一
不知為何, google map API 輸入地址都會定到錯誤的地點, 所以改使用坐標來定位, 取得google map 定位點坐標(latitude + longitude)的方法之一參考看看下列3個步驟.
步驟1: 到 google map 輸入 keyword 找到一個坐標.
說明: 按下右邊的標題的超連結, 右邊google map 就會彈出一個對話框, 選取框框裡的 "更多資訊" -- "傳送".
步驟2: 在傳送的框框裡, 會有一個超連結, 用 "複製超連結" 或 "連結另開新視窗", 就可以看到定位點.
步驟3: 成功取得坐標.
說明: 複製出來的網址, URL:
http://maps.google.com.tw/maps?f=q&source=s_q&hl=zh-TW&geocode=&q=Riparian+Plaza&aq=&sll=-27.468183,153.030109&sspn=0.001323,0.002041&vpsrc=0&brcurrent=3,0x0:0x0,0&ie=UTF8&ll=-27.468466,153.030831&spn=0.002059,0.003484&t=m&z=19&iwloc=A&cid=839265525257578925
步驟1: 到 google map 輸入 keyword 找到一個坐標.
說明: 按下右邊的標題的超連結, 右邊google map 就會彈出一個對話框, 選取框框裡的 "更多資訊" -- "傳送".
步驟2: 在傳送的框框裡, 會有一個超連結, 用 "複製超連結" 或 "連結另開新視窗", 就可以看到定位點.
步驟3: 成功取得坐標.
說明: 複製出來的網址, URL:
http://maps.google.com.tw/maps?f=q&source=s_q&hl=zh-TW&geocode=&q=Riparian+Plaza&aq=&sll=-27.468183,153.030109&sspn=0.001323,0.002041&vpsrc=0&brcurrent=3,0x0:0x0,0&ie=UTF8&ll=-27.468466,153.030831&spn=0.002059,0.003484&t=m&z=19&iwloc=A&cid=839265525257578925
2012年5月8日 星期二
指定 google map 的 button 和地名 用的語系(language)
在預設, 沒有指定語系的情況下, google map API 會自動判斷 user os 正在使用中的語系, 來輸出 button 的 label 和 地名, 我覺得很合理, 這個情況下就可以會產生下列的畫面:
說明: 在英文版的畫面中, 出現 中文字的 "地圖", 會出現中文字是因為 user 使用中文的 OS.
解決的辦法是在引用 google api 的 js 時, 增加 language 參數即可, 例如:
type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&language=en"
跑出來的畫面如下:
說明: 中文版 button 寫 地圖, 英文版 button 寫 Map
說明: 在英文版的畫面中, 出現 中文字的 "地圖", 會出現中文字是因為 user 使用中文的 OS.
解決的辦法是在引用 google api 的 js 時, 增加 language 參數即可, 例如:
type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&language=en"
跑出來的畫面如下:
說明: 中文版 button 寫 地圖, 英文版 button 寫 Map
訂閱:
文章 (Atom)