本文目錄一覽:
- 1、用java讀取txt檔案中的中文寫入資料庫出現中文亂碼,怎麼解決?
- 2、java中文亂碼,能說下string.getBytes()和new String()轉碼是,具體點。
- 3、在java中怎樣處理中文亂碼的問題?(有幾種處理方式)
- 4、java 編程中漢字字元串變成繁體或亂碼
- 5、java中文亂碼問題
- 6、java輸入輸出的問題,輸出中文字元串出現亂碼
用java讀取txt檔案中的中文寫入資料庫出現中文亂碼,怎麼解決?
用java讀取txt檔案中的中文寫入資料庫出現中文亂碼,怎麼解決?
1,設定下你資料庫的編碼,一般設定成UTF-8或者GBK或者GB2312
2,java讀取TXT資料時可以轉換下編碼,再存進資料庫,從資料庫讀取出來後顯示時也同樣的轉換下編碼,好像可以用個過濾器來弄的,
MFC向MySQL資料庫寫入資料,中文亂碼怎麼解決
① 首先把MySQL的服務停掉 在執行視窗輸入: s mysql
② 把伺服器和客戶端的字符集改成自己想用的字符集:GB2312或是utf8等……
具體操作為:開啟mysql安裝目錄下的myini.tet;
找到default-character-set,將其改為自己想用的字符集:GB2312或是utf8等……,要注意的是這裡有兩個default-character-set,用ctrl+f定位在檔案最前面輸入default就會找到,都要改過來;
③ 重啟MySQL伺服器,在執行視窗輸入: start mysql
④ 最重要的是一點是,到這裡我們已經能夠解決亂碼問題了,可問題是我們依然還會出現亂碼問題,這是因為我們現在的表被建立的時候用的是預設的字符集(latin1),所以這時候我們要把表刪除,然後重建就可以了!
java資料庫中文亂碼怎麼解決
可能原因一:資料庫不支援中文,或者是資料庫編碼格式和java程式碼編碼格式不一致,這種情況需要修改資料庫編碼格式:
ALTER SYSTEM DISABLE RESTRICTED SESSION;改完編碼後執行
sql conn / as sysdba;
sql shutdown immediate;
database closed.
database di *** ounted.
oracle instance shut down.
sql startup mount;
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database mounted.
sql alter system enable restricted session;
system altered.
sql alter system set job_queue_processes=0;
system altered.
sql alter system set aq_tm_processes=0;
system altered.
sql alter database open;
database altered.
sql alter database character set internal_use UTF-8;
sql shutdown immediate;
sql startup;
可能原因二:java程式碼生成插入語句的時候,已經發生亂碼現象,這種只能是修改專案編碼格式或者是在資料獲取的時候直接轉譯程式碼編碼格式來實現了。
php讀取txt檔案寫入資料庫
等於茫然無知地站在那裡。
那些紀念碑樹立在亞莫迪凱和內格巴
雖受天鵝神翅拍體撞,
給我一隻蘆笛,歌唱吧
第二天
你早就被風吹縐了的謊言哈哈
android中讀取檔案中文亂碼怎麼解決
修改APP的編碼就可以了
右鍵–Properties–Resource–Text file encoding 選擇就可以了
java 讀取mysql出現中文亂碼?
這個是字符集設定出了問題。首先要看你的資料庫是什麼字符集。mysql 4.x的多用GBK gb2312一類的中文字符集,5.x以後多用utf8的。
在確定了資料庫本身的字符集以後,你再確定你前台程式使用的啥語言。一般java預設的就是utf8 如果不是,你就改成和資料庫一樣的字符集。只有你2個地方的字符集對應了,才能正常顯示。
java檔案中的中文亂碼怎麼解決
原因是寫入時使用的字元編碼和期望的不一致導致的,因為JVM虛擬機器啟動時會因不同的引數使用不同的預設字元編碼。
資料庫匯入sql後中文亂碼怎麼解決
肯定是它的資料庫和你的資料庫的編碼不一致。
檢視他的資料庫的編碼,比如為A編碼。
檢視你的資料庫的編碼,比如為B編碼。
用ultraedit開啟指令碼檔案(給你的sql檔案),另存為另一個檔案(儲存時選擇你的編碼B)
然後再匯入。
在Servlet寫插入資料庫時出現中文亂碼。怎樣解決?拜託了各位 謝謝
寫入資料庫出現中文亂碼?你接收的資料就是亂碼吧…寫入資料庫是不會出現這問題的..你自己看看你接收到的資料是不是就亂碼了
求高手解決java 讀取mysql資料庫資料時的中文亂碼問題!急 急 急
根據下面這幾個步驟,選擇操作
① 首先把MySQL的服務停掉 在執行視窗輸入: s mysql
② 把伺服器和客戶端的字符集改成自己想用的字符集:GB2312或是utf8等……
具體操作為:開啟mysql安裝目錄下的myini.tet;
找到default-character-set,將其改為自己想用的字符集:GB2312或是utf8等……,要注意的是這裡有兩個default-character-set,用ctrl+f定位在檔案最前面輸入default就會找到,都要改過來;
③ 重啟MySQL伺服器,在執行視窗輸入: start mysql
④ 最重要的是一點是,到這裡我們已經能夠解決亂碼問題了,可問題是我們依然還會出現亂碼問題,這是因為我們現在的表被建立的時候用的是預設的字符集(latin1),所以這時候我們要把表刪除,然後重建就可以了
java中文亂碼,能說下string.getBytes()和new String()轉碼是,具體點。
1、Java中,【String.getBytes(String decode)】的方法,會根據指定的decode,編碼返回某字元串在該編碼下的byte數組表示,例如:
byte[] b_gbk = “中”.getBytes(“GBK”);
byte[] b_utf8 = “中”.getBytes(“UTF-8”);
byte[] b_iso88591 = “中”.getBytes(“ISO8859-1”)
上面三行代碼表示:分別返回「中」這個漢字在GBK、UTF-8和ISO8859-1編碼下的byte數組表示,此時b_gbk的長度為2,b_utf8的長度為3,b_iso88591的長度為1。
2、而通過【new String(byte[], decode)】的方式來還原這個「中」字時,實際是使用decode指定的編碼來將byte[ ]解析成字元串,例如:
String s_gbk = new String(b_gbk,”GBK”);
String s_utf8 = new String(b_utf8,”UTF-8″);
String s_iso88591 = new String(b_iso88591,”ISO8859-1″);
s_gbk和s_utf8都是「中」,而只有s_iso88591是一個不認識 的字元,因為ISO8859-1編碼的編碼表中,根本就沒有包含漢字字元,當然也就無法通過”中”.getBytes(“ISO8859-1”)。
因此,通過【String.getBytes(String decode)】方法來得到byte[ ]時,要確定decode的編碼表中確實存在String表示的碼值,這樣得到的byte[ ]數組才能正確被還原。
擴展資料
java中文編碼避免亂碼
1、為了讓中文字元適應某些特殊要求(如http header頭要求其內容必須為iso8859-1編碼),可能會通過將中文字元按照位元組方式來編碼的情況,比如:
String s_iso88591 = new String(“中”.getBytes(“UTF-8″),”ISO8859-1”)
2、上述例子中的s_iso8859-1字元串實際是三個在 ISO8859-1中的字元,在將這些字元傳遞到目的地後,目的地程序再通過相反的方式:
String s_utf8 = new String(s_iso88591.getBytes(“ISO8859-1″),”UTF-8”)
來得到正確的中文漢字。這樣就既保證了遵守協 議規定、也支持中文。
3、String.getBytes(String decode)方法會根據指定的decode編碼返回某字元串在該編碼下的byte數組表示這裡是encode ,not decode,從字元串到位元組數組是編碼的過程,從位元組數組到字元串(即 new String(byte[] , charsetname))才是解碼的過程。
參考資料:百度百科-UTF-8
在java中怎樣處理中文亂碼的問題?(有幾種處理方式)
讀取文件的時候如果是用的read方法(位元組流),碰到中文輸出就是亂碼,然後存儲的時候設置下編碼為GBK或者是UTF-8形式即可,可以有效的解決亂碼問題。
可以通過BufferedReader 流的形式進行流緩存,之後通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
try {
String file = “D:/test/test.txt”;
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
System.out.println(str);//原樣輸出讀到的內容
};
備註: 流用完之後必須close掉,如上面的就應該是:bre.close(),否則bre流會一直存在,直到程序運行結束。
可以通過「FileOutputStream」創建文件實例,之後過「OutputStreamWriter」流的形式進行存儲,舉例:
OutputStreamWriter pw = null;//定義一個流
pw = new OutputStreamWriter(new FileOutputStream(「D:/test.txt」),”GBK”);//確認流的輸出文件和編碼格式,此過程創建了「test.txt」實例
pw.write(“我是要寫入到記事本文件的內容”);//將要寫入文件的內容,可以多次write
pw.close();//關閉流
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。
java 編程中漢字字元串變成繁體或亂碼
這個是典型的GBK亂碼。
應該是你的jdk的編碼設置不對。和你的java文件編碼不一致。
java中文亂碼問題
亂碼問題也是我一直覺得比較蛋疼的問題,下面是我在網上看到的,樓主可以參考一下
一、Java中文問題的由來
Java的內核和class文件是基於unicode的,這使Java程序具有良好的跨平台性,但也帶來了一些中文亂碼問題的麻煩。原因主要有兩方面,Java和JSP文件本身編譯時產生的亂碼問題和Java程序於其他媒介交互產生的亂碼問題。
首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基於位元組流的,如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現亂碼。基於這種亂碼,建議在Java文件中盡量不要寫中文(注釋部分不參與編譯,寫中文沒關係),如果必須寫的話,盡量手動帶參數-ecoding GBK或-ecoding gb2312編譯;對於JSP,在文件頭加上或基本上就能解決這類亂碼問題。
本文要重點討論的是第二類亂碼,即Java程序與其他存儲媒介交互時產生的亂碼。很多存儲媒介,如資料庫,文件,流等的存儲方式都是基於位元組流的,Java程序與這些媒介交互時就會發生字元(char)與位元組(byte)之間的轉換,具體情況如下:
從頁面form提交數據到java程序 byte-char
從java程序到頁面顯示 char?byte
從資料庫到java程序 byte?char
從java程序到資料庫 char?byte
從文件到java程序 byte-char
從java程序到文件 char-byte
從流到java程序 byte-char
從java程序到流 char-byte
如果在以上轉換過程中使用的編碼方式與位元組原有的編碼不一致,很可能就會出現亂碼。
二、解決方法
前面已經提到了Java程序與其他媒介交互時字元和位元組的轉換過程,如果這些轉換過程中容易產生亂碼。解決這些亂碼問題的關鍵在於確保轉換時使用的編碼方式與位元組原有的編碼方式保持一致,下面分別論述(Java或JSP自身產生的亂碼請參看第一部分)。
1、JSP與頁面參數之間的亂碼
JSP獲取頁面參數時一般採用系統默認的編碼方式,如果頁面參數的編碼類型和系統默認的編碼類型不一致,很可能就會出現亂碼。解決這類亂碼問題的基本方法是在頁面獲取參數之前,強制指定request獲取參數的編碼方式:request.setCharacterEncoding(“GBK”)或request.setCharacterEncoding(“gb2312”)。
如果在JSP將變數輸出到頁面時出現了亂碼,可以通過設置response.setContentType(“text/html;charset=GBK”)或response.setContentType(“text/html;charset=gb2312”)解決。
如果不想在每個文件里都寫這樣兩句話,更簡潔的辦法是使用Servlet規範中的過慮器指定編碼,過濾器的在web.xml中的典型配置和主要代碼如下:
web.xml:
CharacterEncodingFilter
net.vschool.web.CharacterEncodingFilter
encodingGBK
CharacterEncodingFilter
/*
CharacterEncodingFilter.java:
public class CharacterEncodingFilter implements Filter
{
protected String encoding = null;
public void init(FilterConfig filterConfig) throws ServletException
{
this.encoding = filterConfig.getInitParameter(“encoding”);
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
request.setCharacterEncoding(encoding);
response.setContentType(“text/html;charset=”+encoding);
chain.doFilter(request, response);
}
}
2、Java與資料庫之間的亂碼
大部分資料庫都支持以unicode編碼方式,所以解決Java與資料庫之間的亂碼問題比較明智的方式是直接使用unicode編碼與資料庫交互。很多資料庫驅動自動支持unicode,如Microsoft的SQLServer驅動。其他大部分資料庫驅動,可以在驅動的url參數中指定,如如mm的mysql驅動:jdbc:mysql://localhost/WEBCLDB?useUnicode=truecharacterEncoding=GBK。
3、Java與文件/流之間的亂碼
Java讀寫文件最常用的類是FileInputStream/FileOutputStream和FileReader/FileWriter。其中FileInputStream和FileOutputStream是基於位元組流的,常用於讀寫二進位文件。讀寫字元文件建議使用基於字元的FileReader和FileWriter,省去了位元組與字元之間的轉換。但這兩個類的構造函數默認使用系統的編碼方式,如果文件內容與系統編碼方式不一致,可能會出現亂碼。在這種情況下,建議使用FileReader和FileWriter的父類:InputStreamReader/OutputStreamWriter,它們也是基於字元的,但在構造函數中可以指定編碼類型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。
4、其他
上面提到的方法應該能解決大部分亂碼問題,如果在其他地方還出現亂碼,可能需要手動修改代碼。解決Java亂碼問題的關鍵在於在位元組與字元的轉換過程中,你必須知道原來位元組或轉換後的位元組的編碼方式,轉換時採用的編碼必須與這個編碼方式保持一致。我們以前使用Resin伺服器,使用smartUpload組件上傳文件,上傳文件同時傳遞的中文參數獲取沒有亂碼問題。當在Linux中把Resin設置成服務後,上傳文件同時的中文參數獲取出現了亂碼。這個問題困擾了我們很久,後來我們分析smartUpload組件的源文件,因為文件上傳採用的是位元組流的方式,裡面包含的參數名稱和值也是位元組流的方式傳遞的。smartUpload組件讀取位元組流後再將參數名稱和值從位元組流中解析出來,問題就出現在smartUpload將位元組流轉換成字元串時採用了系統默認的編碼,而將Resin設置成服務後,系統默認的編碼可能發生了改變,因此出現了亂碼。後來,我們更改了smartUpload的源文件,增加了一個屬性charset和setCharset(String)方法,將upload()方法中提取參數語句:
String value = new String(m_binArray, m_startData, (m_endData – m_startData) + 1 );
改成了
String value = new String(m_binArray, m_startData, (m_endData – m_startData) + 1, charset );
出處:
java輸入輸出的問題,輸出中文字元串出現亂碼
是你系統編碼設置有問題,右擊項目選擇properties,修改你項目的默認編碼為GBK或者為utf-8
原創文章,作者:GDSGG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/324900.html