1. 程式人生 > >findbugs異常(2):Reliance on default encoding

findbugs異常(2):Reliance on default encoding

1. 官方說明:

Reliance on default encoding
Found a call to a method which will perform a byte to String (or String to byte) conversion, and will assume that the default platform encoding is suitable. This will cause the application behaviour to vary between platforms. Use an alternative API and specify a charset name or Charset object explicitly.

2. 出錯程式碼片段:

            response.setHeader("Content-Disposition", "attachment;filename="
                    + new String((fileName + ".xlsx").getBytes(), "iso-8859-1"));

3. 說明:

String.getBytes()依賴於系統編碼,雖然方便,但是一旦使用就變成了一個技術債務,因為系統的預設編碼是不可預知的

如果要避免這個錯誤,需要將編碼指定好,即:

String.getBytes("GBK")

這是getBytes的一個過載方法,可以指定getBytes使用的編碼

PS:常用編碼中,筆者暫時只發現GBK編碼中漢字佔2個位元組,其餘均佔3個位元組

(這段轉自:

新浪部落格

相關推薦

findbugs異常2Reliance on default encoding

1. 官方說明:Reliance on default encodingFound a call to a method which will perform a byte to String (or

findbugs異常1Exception is caught when Exception is not thrown

Exception is caught when Exception is not thrownThis method uses a try-catch block that catches Excep

Vue報錯筆記2No 'Access-Control-Allow-Origin' header is present on the requested resource.

就是說:當使用ajax訪問遠端伺服器時,請求失敗,瀏覽器報如上錯誤。這是出於安全的考慮,預設禁止跨域訪問導致的 1. 什麼時跨域訪問 舉個栗子:在A網站中,我們希望使用Ajax來獲得B網站中的特定內容。如果A網站與B網站不在同一個域中,那麼就出現了跨域

學習筆記深入理解Java虛擬機 第二章:Java內存區域與內存溢出異常2

保留 頻繁 深入 一是 init方法 對象的引用 整理 緩沖 出現 學習筆記:深入理解Java虛擬機 第二章:Java內存區域與內存溢出異常(2) 三、HotSpot虛擬機對象探秘 1.對象的創建 ? 在Java程序運行過程中時刻都有對象被創建。在語言層面上,創建對象(例如

Windows Phone開發2豎立自信,初試鋒茫

一鍵 優秀 保持 知識 sdn ant emulator 一個 動畫 上一篇文章中,我們聊了一些“大炮”話題,從這篇文章開始,我們一起來學習WP開發吧。 一、我們有哪些裝備。 安裝完VS 學習版 for WP後,也連同SDK一並安裝了,不必像安卓那樣,安裝JDK,下載

TCP/IP協議2網絡設備

數據包 服務器 網絡設備 風暴 二層交換機 不同的 中繼器 tcp/ip 解決 1、中繼器(Repeater) 中繼器工作在OSI的一層,我們知道,超5類線的傳輸距離最大為100米,超過這個距離信號就會衰減,中繼器就是為了防止信號變差,將網絡信號進行再生和重定時。 2、

MongoDB2 增刪改操作

db nosql mongo 增刪改 curd 附加命令:1、進入前端操作命令./mongo [ip:端口]說明:默認會自動選本地,端口270172、顯示所有的庫> show dbs; 或者 show databases;3、選擇庫> use 庫名;4、顯示庫所有的集合&g

數據清洗小記2全角數字轉換半角數字

大局觀 山東 轉載 亞洲 pop rpm包 stats mod 法律 原創作品。出自 “深藍的blog” 博客,歡迎轉載,轉載時請務必註明出處,否則有權追究版權法律責任。深藍的blog:http://blog.csdn.net/huangyanlong/article/d

python每日一類2platform

獲得 min def glob model implement 匯總 uname 信息 根據官方文檔的解釋(https://docs.python.org/3.5/library/platform.html#module-platform): 學習其他人的代碼如下: #

springBoot2Properties和YAML配置文件

springboot springboot的properties和yaml配置文件 一、配置文件的生效順序,會對值進行覆蓋1. @TestPropertySource 註解2. 命令行參數3. Java系統屬性(System.getProperties())4. 操作系統環境變量5. 只有在rando

Java學習2將鍵盤錄入的內容保存到指定文件中

stream exce 創建 txt 關閉 如果 下午 line 再次 要求:保存鍵盤錄入的內容,當鍵盤輸入end時,錄入結束。 1 /** 2 * 保存鍵盤輸入,並以end結束 3 * 4 * @author xcx 5 * @time 2017年6

初識vue 2.02路由與組件

組件化 script -128 watch css image 暫時 效果 默認 1,在上一篇的創建工程中,使用的的模版 webpack-simple 只是創建了一個簡單的demo,並沒有組件和路由功能,此次采用了webpack模版,自動生成組件和路由。^_^ 在模版初始

python函數2函數進階

int splay 基本 源文件 tuple [0 執行 內容 理念 昨天說了函數的一些最基本的定義,今天我們繼續研究函數。今天主要研究的是函數的命名空間、作用域、函數名的本質、閉包等等 預習: 1、寫函數,用戶傳入修改的文件名,與要修改的內容,執行函數,完成整個文件

記Angular與Django REST框架的一次合作2前端組件化——Angular

服務器 信息 outer demo cli 組成 控制 set 根據 註:這是這個系列的第二部分,主要集中在Angular的使用方面。之前使用過AngularJS(Angular 1.x),混在Django的模板中使用,這些頁面一般完全是結果展示頁。在有Django表單輸入

Unity3d使用心得2Unity3d 動態下載動畫資源——AnimationClip 的使用 - 斯瑪特琦

通過 dsm color 解決 con content 資源 sse popu 引言: 在使用 Unity3d 開發微端、或者網頁遊戲的時候常常須要將資源打包成 AssetBundle ,然後通過 www 的方式動態的下載資源。今天要分享的是我再動態下

設計模式六大原則2裏氏替換原則

tr1 裏氏替換原則 style tar 裏氏替換 href target 替換 設計模式 XN潮寺贛3PF鋁73瓷Hhttp://weibo.com/p/1005056364252732 壇2偈6v實8uka誆敲wmhttp://weibo.com/p/10050563

微信小程序——豆瓣電影——2小程序運行部署

images 放心 覆蓋 當前 .cn markup 必須 global 定義 Demo 預覽 演示視頻(流量預警 2.64MB) GitHub Repo 地址 倉庫地址:https://github.com/zce/weapp-demo 使用步驟 將倉庫克隆到本地

Linux日常管理技巧2free,ps,netstat命令和抓包工具

情況下 路由器配置 傳輸協議 method ups lis red field 保存 一、free命令 free命令可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩沖區。用法: free [選項] 選項: -b:以Byte為單位顯示內存使用情況;-

web前端學習2開始編寫HTML

其中 title 養成 的人 以及 字體 寫入 文本格式 軟件   在第一章中,我們初步了解了上網的過程,同時也明白了所謂網頁,其本質就是主要用HTML語言所寫的一份文檔。相信大多數人在了解HTML文件前,最先接觸的是利用“記事本”所寫的文檔或者是利用辦公軟件“Word”

設計模式2工廠方法模式

sys 實例化 不同 err reat inter 設計 end 泛型 工廠方法模式: ? 定義: ? 定義一個用於創建對象的接口,讓子類決定實例化哪一個類。工廠方