public?class?Test?{
瑞金ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
public?static?void?main(String[]?args)?{
System.out.println(format("登記編號(hào)123456正在審批過(guò)程中。"));
}
public?static?String?format(String?text)?{
for?(int?i?=?0;?i??10;?i++)?{
text?=?text.replace((char)?('0'?+?i),?
"零一二三四五六七八九".charAt(i));
}
return?text;
}
}
java中怎么把utf-8編碼的字符串轉(zhuǎn)成漢字
main()
{
int i,a[10];
for(i=0;i=9;i++)
a[i]=i;
for(i=9;i=0;i--)
printf("%d ",a[i]);
}
【例7.2】
main()
{
int i,a[10];
for(i=0;i10;)
a[i++]=i;
for(i=9;i=0;i--)
printf("%d",a[i]);
}
【例7.3】
main()
{
int i,a[10];
for(i=0;i10;)
a[i++]=2*i+1;
for(i=0;i=9;i++)
printf("%d ",a[i]);
printf("\n%d %d\n",a[5.2],a[5.8]);
}
本例中用一個(gè)循環(huán)語(yǔ)句給a數(shù)組各元素送入奇數(shù)值,然后用第二個(gè)循環(huán)語(yǔ)句輸出各個(gè)奇數(shù)。在第一個(gè) for語(yǔ)句中,表達(dá)式3省略了。在下標(biāo)變量中使用了表達(dá)式i++,用以修改循環(huán)變量。當(dāng)然第二個(gè)for語(yǔ)句也可以這樣作,C語(yǔ)言允許用表達(dá)式表示下標(biāo)。 程序中最后一個(gè)printf語(yǔ)句輸出了兩次a[5]的值,可以看出當(dāng)下標(biāo)不為整數(shù)時(shí)將自動(dòng)取整。
7.1.3 一維數(shù)組的初始化
當(dāng)在基于HTTP協(xié)議的JSP或Servlet的應(yīng)用中獲取數(shù)據(jù)或發(fā)送請(qǐng)求時(shí),JVM會(huì)把輸送的數(shù)據(jù)編碼成UTF8格式。如果我們直接從HTTP流中提取中文數(shù)據(jù),提取的結(jié)果為“????”(可能更多問(wèn)號(hào)),為轉(zhuǎn)換成我們能夠理解的中文字符,我們需要把UTF8轉(zhuǎn)換成GB2312,借助ISO-8859-1標(biāo)準(zhǔn)編碼能夠輕易的實(shí)現(xiàn),下面的代碼實(shí)現(xiàn)了這一功能:
byte [] b;
String utf8_value;
utf8_value = request.getParameter("NAME");//從HTTP流中取"NAME"的UTF8數(shù)據(jù)
b = utf8_value.getBytes("8859_1"); //中間用ISO-8859-1過(guò)渡
String name = new String(b, "GB2312"); //轉(zhuǎn)換成GB2312字符
在知道流長(zhǎng)度的情況下將輸入流轉(zhuǎn)換成字節(jié)數(shù)組 Java中的輸入流抽象類InputStream有int read(byte[] b, int off, int len)方法,參數(shù)中byte[] b是用來(lái)存放從InputStream中讀取的數(shù)據(jù),int off指定數(shù)組b的偏移地址,也就是數(shù)組b的起始下標(biāo),int len指定需要讀取的長(zhǎng)度,方法返回實(shí)際讀取的字節(jié)數(shù)。
下面的代碼實(shí)現(xiàn)了這一功能:
ServletInputStream inStream = request.getInputStream(); //取HTTP請(qǐng)求流
int size = request.getContentLength(); //取HTTP請(qǐng)求流長(zhǎng)度
byte[] buffer = new byte[size]; //用于緩存每次讀取的數(shù)據(jù)
byte[] in_b = new byte[size]; //用于存放結(jié)果的數(shù)組
int count = 0;
int rbyte = 0;
while (count size) {
//循環(huán)讀取
rbyte = inStream.read(buffer); //每次實(shí)際讀取長(zhǎng)度存于rbyte中
for(int i=0;irbyte;i++) {
in_b[count + i] = buffer[i];
}
count += rbyte;
}
在不知道流長(zhǎng)度的情況下將輸入流轉(zhuǎn)換成字節(jié)數(shù)組 前面介紹了已知流長(zhǎng)度的情況下的轉(zhuǎn)換方法,那么當(dāng)我們不知道流有多長(zhǎng)時(shí),也就是說(shuō)不能確定轉(zhuǎn)換后的字節(jié)數(shù)組有多大時(shí),該怎么處理呢?筆者查看了JDK文檔之后發(fā)現(xiàn)ByteArrayOutputStream有一個(gè)byte[] toByteArray()方法,該方法會(huì)自動(dòng)創(chuàng)建一個(gè)字節(jié)數(shù)組,然后返回。于是就巧妙的用ByteArrayOutputStream來(lái)作中間過(guò)渡實(shí)現(xiàn)轉(zhuǎn)換,其它處理跟上面所介紹已知長(zhǎng)度的情況差不多。假設(shè)需要被轉(zhuǎn)換的流已經(jīng)放在inStream里了,我們可以用如下的代碼實(shí)現(xiàn)這一功能:
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100]; //buff用于存放循環(huán)讀取的臨時(shí)數(shù)據(jù)
int rc = 0;
while ((rc = inStream.read(buff, 0, 100)) 0) {
swapStream.write(buff, 0, rc);
}
byte[] in_b = swapStream.toByteArray(); //in_b為轉(zhuǎn)換之后的結(jié)果
你試著改寫成自己需要的代碼
可以通過(guò)BufferedReader 流的形式進(jìn)行流緩存,之后通過(guò)readLine方法獲取到緩存的內(nèi)容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時(shí)獲取到的bre就是整個(gè)文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最后一行不存在,為空結(jié)束循環(huán)
{
System.out.println(str);//原樣輸出讀到的內(nèi)容(unicode會(huì)自動(dòng)轉(zhuǎn)換為中文的)
};
備注:unicode不需要轉(zhuǎn)換的,直接輸出即可,會(huì)自動(dòng)變成中文,如:
System.out.println("\u0061\u0062\u6c49\u5b57");
結(jié)果就是:ab漢字。