java utf-8帶bom格式內容(帶"\uFEFF")轉換成utf-8格式- 台部落

文章推薦指數: 80 %
投票人數:10人

java utf-8帶bom格式內容(帶"\uFEFF")轉換成utf-8格式. 原創 HiWorldNice 2020-06-20 04:48. 從txt文件中讀取一串字符串和數據庫中另一串字符串比較的時候發現兩串字符 ... 請輸入正確的登錄賬號或密碼 註冊 忘記密碼 首頁 android 正文 javautf-8帶bom格式內容(帶"\uFEFF")轉換成utf-8格式 原創 HiWorldNice 2020-06-2004:48 從txt文件中讀取一串字符串和數據庫中另一串字符串比較的時候發現兩串字符串一樣,但是判斷是否equal的時候發現返回的是false,也就是不相等。

這就奇怪了,於是打印log,發現了端倪: 左邊的字符串是數據庫的,右邊的字符串是從txt文檔讀取的,發現右邊的字符串前有個小點。

把整個內容複製粘貼出來,發現那個小點又不見了: E/id===:55cdf761d9c74874b381d24a64cb2766,55cdf761d9c74874b381d24a64cb2766 單獨複製那個小點,用百度搜索,發現什麼也搜不到,空白,只會跳轉到百度首頁。

這就很奇怪了。

把那個小點複製粘貼到編輯器上,還是什麼也沒。

添加雙引號“”再粘貼進去,就出現內容了: "\uFEFF" 發現這個是文檔編碼格式的問題。

文檔是utf-8帶bom格式,這個是不標準的。

標準的格式是utf-8無bom格式。

什麼是BOM? BOM(byte-ordermark),即字節順序標記,它是插入到以UTF-8、UTF16或UTF-32編碼Unicode文件開頭的特殊標記,用來識別Unicode文件的編碼類型。

對於UTF-8來說,BOM並不是必須的,因爲BOM是用來標記多字節編碼文件的編碼類型和字節順序(big-endian或little-endian)。

而UTF-8中,每個字符的編碼有多少位是通過第一個字節來表述的,而且沒有big-endian和little-endian的區分。

UTF-8不需要BOM,儘管Unicode標準允許在UTF-8中使用BOM。

所以不含BOM的UTF-8纔是標準形式,在UTF-8文件中放置BOM主要是微軟的習慣(順便提一下:把帶有BOM的小端序UTF-16稱作「Unicode」而又不詳細說明,這也是微軟的習慣)。

BOM是爲UTF-16和UTF-32準備的,用於標記字節序(byteorder)。

微軟在UTF-8中使用BOM是因爲這樣可以把UTF-8和ASCII等編碼明確區分開,否則用Excel打開CSV文件有可能是亂碼的。

但這樣的文件在Windows之外的操作系統裏會帶來問題。

「UTF-8」和「帶BOM的UTF-8」的區別就是有沒有BOM。

即文件開頭有沒有U+FEFF。

UTF-8的網頁代碼不應使用BOM,否則常常會出錯。

當從http的response輸出CSV文件的時候,設置爲utf8的時候默認是不帶 bom的,但是windows的Excel是使用bom來確認utf8編碼的,所有需要把bom寫到文件的開頭。

由此可見如果txt文件格式是utf-8帶bom是不標準的,這樣獲取的字符串可能有問題。

那怎麼處理呢?如果是utf-8帶bom格式,那就把第一個字符去掉,從第二個字符開始截取。

如果是utf-8無bom格式,那麼就從第一個字符開始截取。

代碼如下: Stringid; //獲取txt文件內容的id。

後臺導出的txt文件格式爲帶bom的utf-8。

需要判斷第一個字符是否是'\uFEFF' if(inputTaskItem.substring(0,1).contains("\uFEFF")){//是utf-8帶bom格式 //把第一位去掉,從第二位開始截取。

inputTaskItem爲txt文件內容字符串 id=inputTaskItem.substring(1); }else{//是utf-8無bom格式 //正常獲取 id=inputTaskItem; } 經測試,問題解決。

Android java 發表評論 登录 所有評論 還沒有人評論,想成為第一個評論的人麼?請在上方評論欄輸入並且點擊發布. 相關文章 JAVA運維要掌握哪些常用技能? 熟悉Linux操作系統、shell腳本、內核調優和網絡、jvm等知識;熟悉容器技術及其生態,如Docker、K8S容器平臺及周邊生態,對K8S網絡、存儲、監控和應用編排等;熟悉Ansible、Zabbix、Grafana、ES、Apac 原創 2022-05-0121:17:50 wait()、notify()方法詳解 簡介 wait()、notify()方法可用於控制線程的生命週期 詳解 1、wait()不帶參數 在當前線程中調用A對象的wait()方法,此時當前線程會進入等待狀態,此時當前線程會釋放所持有的鎖資源,等到 原創 2022-04-3014:33:13 IO-輸出流及wirte()方法的理解誤區 簡介 在Java的IO輸出流中,有三個重載的write()方法,它們用於向輸出流所對應的文件中寫入內容,但是如果沒有真正理解輸出流及write()方法的原理,很容易混淆文件寫入時到底是覆蓋還是追加 構造器 這裏以 原創 2022-04-3014:33:05 使用JDBC連接MySql時出現:Theservertimezonevalue'Öйú±ê׼ʱ¼ä'isunrecognized 啓動項目,mysql數據庫使用異常: Causedby:com.mysql.cj.exceptions.InvalidConnectionAttributeException:Theservertimezonevalue'Ö 原創 2022-04-3014:32:55 使用SimpleDateFormat將毫秒轉換成時分秒格式:HH:mm:ss publicstaticStringdateFormatFromMilliSecond(longseconds){ //初始化format格式 SimpleDateFormatdateFormat=newSimp 原創 2022-04-3014:32:52 Springboot項目啓動完成後,自動打開瀏覽器的配置 1.增加命令行執行類 [@Component](https://my.oschina.net/u/3907912) publicclassStartSuccessfulimplementsCommandLineRunner{ 原創 2022-04-3014:32:47 高級java面試題(數據庫篇) 數據庫篇 ACID是靠什麼保證的? 原子性是靠undolog日誌來保證的,它記錄了需要回滾的日誌信息,事務回滾時,撤銷已經執行的sql 隔離性是由mvcc(多版本控制)來保證的 持久性是由redolog來保證的,mysql在修改數 原創 2022-04-3014:32:46 Springboot使用@JsonIgnore的坑 springboot項目中使用註解目的com.fasterxml.jackson.annotation.JsonIgnore是想解決返回json的結果不用帶回某個被註解的字段。

這個目的確實能達到了,但是也把一個坑給帶出來了:這哥們是全部 原創 2022-04-3014:32:39 springboot監聽失效redis的key -在springboot項目中配置監聽redis的失效key: 注入redis消息監聽容器 /** *Redis消息監聽器容器. *[@param]redisConnectionFactory 原創 2022-04-3014:32:36 foundcharacter'@'thatcannotstartanytoken.(Donotuse@forindentation) springboot項目在application.yml加入@[email protected] 如果沒有出現profiles,那麼是在pom中缺少以下配置 原創 2022-04-3014:32:27 springboot返回的json數據時,無需展示某些字段 需要使用註解: @JsonIgnore 具體需要import: importcom.fasterxml.jackson.annotation.JsonIgnore; maven中添加一下pom: 原創 2022-04-3014:32:26 mavendependencyManagement使用總結 現象:當一個應用有多個模塊時,導致項目無法啓動。

原因:同一個依賴在不同的模塊有不同的版本,出現衝突,導致報NoClassFound。

解決方案:通過在根模塊時dependencyManagement標籤來管理版本,子模塊依賴相同的版本時不 原創 2022-04-3014:27:34 EnableConfigurationProperties的實現原理 @EnableConfigurationProperties的實現原理 1、總結 通過spring生命週期的beanPostprocessor接口將對象注入到容器中。

2、分析 2.1EnableConfigurationPropert 原創 2022-04-3014:27:21 整理下自己這些年用過的技術,可能有遺漏,隨時補充 按字母序(用過,精通說不上,每次都能有新感受,問題都能解決) ab apicloud beego bootstrap canvas css/3 composer consul docker easyswoole echarts ecmas 原創 2022-04-3014:26:24 FAST協議解析(三)完整一個模板以及解析效率問題 廢話 上一章介紹了兩種解析代碼(流程基本一樣),這次我會將示例的數據一起放出來,並探討一下解析的效率問題。

還有一個需要避坑的點,那邊給的數據文檔,和模板文檔,對於字段的解析會出現對不上然後報錯的問題,例如:一個FAST模板定義爲uInt 原創 2022-04-3014:25:10 H HiWorldNice 24小時熱門文章 k8s入門之常見問題&命令 鬱金香用C寫一個定時器來循環獲取陽光 一文讀懂MySQL索引 09你這導師太假了,不如換個學術大佬! 高代技巧小記 11導師讓你造航母怎麼辦? 10我可以不用發論文了? 12水論文如何吹一個好故事 這個外包公司太噁心了。



進去請三思! 本次秋招最差面試體驗給到華爲! 最新文章 BadTokenException:UnabletoaddwindowToastHandler SQLiteException:unrecognizedtoken: ps快速把圖片背景色變成透明圖片 Android自定義EditText密碼框,自定義EditText的hint不顯示問題 javautf-8帶bom格式內容(帶"\uFEFF")轉換成utf-8格式 最新評論文章 [2022]TopRatedCheckPoint156-315.80ExamQuestions QualifiedWritingServiceinAustraliacanallowstudentstoachievebettergrades Takeassignmenthelpertoresolvethepaperquerieseasily UpdatedCompTIADA0-001ExamQuestions(2022) 美國黑金效果和其它速效藥的不同之處 MicrosoftDP-500PDFQuestion[2022]-SecretToPassExamInFirstAttempt-[PremiumDumps]



請為這篇文章評分?