2012-06-26 43 views
0

我有一個mysql數據庫,其中存儲了與非編碼特殊字符一起存儲的文本。 例如,表格中的單元格具有類似於Texas A&M將所有mysql文本轉換爲ascii格式

我希望數據庫中的所有文本都具有相應的ascii形式。例如,Texas A&M應該是Texas A&M

這是一個很大的數據庫,我想確保this ASCII chart中的所有字符都被計算和轉換。

這樣做的好方法是什麼?

回答

1

你說你想確保「這個ASCII圖表」中的所有字符,但其中的圖表包括所有可打印的字符,所以我不認爲你真的想要按照你所說的去做。相反,您可能想要編碼XML,URL或HTML。

最簡單的方法是將數據加載到您擁有的任何XML處理工具中,並讓它完成工作。也就是說,我發現99%的時間人們在存儲「預編碼」數據時,他們實際上並不想這麼做:他們想要對某些輸出的數據進行編碼。以原生形式存儲數據並在使用/輸出上進行編碼要好得多。

原因很簡單:曾見過一個應用程序,窗口標題看起來像"Installing X&Y Application"?這是因爲數據被認爲是「僅用於Web輸出」並被預編碼。但即使如此,Web輸出在HTML,URL和XML交換上下文中也是不同的,因此預編碼數據確實會將您置於其中一種選擇中,而不是在輸出時進行正確的編碼。

如果您確實想要這樣做,您需要提供有關您所使用環境(實際數據庫類型和可用編程語言)的更多詳細信息。

+0

你是對的,轉換的目的是因爲數據在網站上使用將通過web服務調用返回xml(到移動設備)我想轉換字符之前發送回(特別是移動設備設備),但我認爲在負載下實際上預先轉換數據會更好。這難道不是什麼大問題嗎? – Sababado

+0

如果數據大部分是靜態的,那麼預先轉換數據將是一個優勢,因此轉換和存儲的成本可以爲其本身付費。數據訪問的次數將決定中斷的位置。對於一個積極的例子,許多內容管理系統在線保存一個「Cached」表,用於存儲事物的轉義版本。在這種情況下,如果緩存副本不存在*或*源數據已更改,則在訪問時創建它們。請注意,即使在這種情況下,源數據也會保留,緩存會被預先渲染並轉義,因爲* only *用於輸出到HTML。 – Godeke

+0

數據大部分是靜態的。一些數據可能每年更改一次。 預計會有不錯的負載,每天6K到8K個Web服務請求(該網站每天的服務量已經達到12K左右)。 緩存的數據庫聽起來像個好主意,但我必須確保當前有足夠的存儲空間。 – Sababado