1. 程式人生 > >mysql servlet呼叫插入帶有格式的大文字換行符無效的問題

mysql servlet呼叫插入帶有格式的大文字換行符無效的問題

做一個圖書管理系統,需要將圖書目錄存在伺服器的資料庫中,然後再安卓客戶端中呼叫資料並顯示,一開始直接將大文字存成Varchar格式,發現這個格式存的文字似乎都沒有格式,換行符都沒有作用。後來查資料發現應該存成text格式。但是存成text格式以後換行符依然無效,組後通過sql指令發現換行符被預設存成\r,但是讀取的時候,去被顯示成立回車。

有查閱資料發現,mysql中,換行符應該是<br>。如果想讓存在mysql中的文字有格式,必須將原來文字的\r轉換成<br>

具體方法是:

1.現將格式化好的文字存入資料庫中

2.利用指令update book SET book_press = REPLACE(book_press, '\r', '<br>');將文字中的\r

換成<br>。

用了該方法以後,發現在瀏覽器中呼叫換行符有效了,但是在手機客戶端上呼叫顯示的時候卻直接顯示<br>符號,而且也不能換行。但是值得注意的是這條指令同樣可以替換資料庫文字中的其他指令,是一條非常有用的指令。

我又開始懷疑是不是安卓端的文字顯示框的問題,經過一系列噁心的測試終於找到了問題,安卓端的換行符實際是是\n。servlet端取到資料庫中的資料裡面的回車符是沒有問題的,但是傳送到安卓客戶端中的資料就沒有了回車符,不知道是在哪一步回車符不見了,但是還是找到了解決方法。

就是在servlet端把\n轉化為@,然後再在客戶端顯示前把它改回來。

具體方法如下:

1.servlet端取到資料庫中的資料裡面的字串以後加一個指令

result = result1.replace('\n','@');(result1 是原字串)

2.在安卓端,把字串傳給文字顯示框之前加條指令

result1= result.replace('\n','@');(result 是原字串)

問題終於解決