خواندن و نوشتن داده هایی که با utf-8 کد گذاری شده اند

خواندن و نوشتن داده هایی که با utf-8 کد گذاری شده اند.

خواندن و نوشتن داده هایی که با utf-8 کد گذاری شده اند

شاید برای شما هم پیش آمده باشد که بخواهید برنامه متن فارسی در فایلی بنویسد و  ?????? تحویل بگیرید. و یا حتی موقع خواندن متن فارسی از یک فایل با همان علامت های سوال مواجه بشید. این به دلیل نوشته نشدن فایل با شیوه کد گذاری مناسبه و در مورد دوم بهتره  coding خروجی کنسول تون رو UTF-8 تنظیم کنید و دوباره امتحان کنید اگر باز هم مشکل داشت کدتون رو تغییر بدهید. به احتمال زیاد در گنو/لینوکس با این مشکل مواجه نخواهید شد چون پیش فرض utf8 , JDK است حداقل برای من که این طور بود.

خواندن از فایل:


package com.test.file;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
 
public class test {
	public static void main(String[] args){
 
	try {
		File fileDir = new File("/home/username/test.txt");
 
		BufferedReader in = new BufferedReader(
		   new InputStreamReader(
                      new FileInputStream(fileDir), "UTF8"));
 
		String str;
 
		while ((str = in.readLine()) != null) {
		    System.out.println(str);
		}
 
                in.close();
	    } 
	    catch (UnsupportedEncodingException e) 
	    {
			System.out.println(e.getMessage());
	    } 
	    catch (IOException e) 
	    {
			System.out.println(e.getMessage());
	    }
	    catch (Exception e)
	    {
			System.out.println(e.getMessage());
	    }
	}
}

و نوشتن در فایل:


package com.test.file;
 
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
 
public class test {
	public static void main(String[] args){
 
	  try {
		File fileDir = new File("/home/username/test.txt");
 
		Writer out = new BufferedWriter(new OutputStreamWriter(
			new FileOutputStream(fileDir), "UTF8"));
 
		out.append("eng text UTF-8").append("\r\n");
		out.append("متن نمونه فارسی UTF-8").append("\r\n");
 
		out.flush();
		out.close();
 
	    } 
	   catch (UnsupportedEncodingException e) 
	   {
		System.out.println(e.getMessage());
	   } 
	   catch (IOException e) 
	   {
		System.out.println(e.getMessage());
	    }
	   catch (Exception e)
	   {
		System.out.println(e.getMessage());
	   } 
	}	
}

مطالب مرتبط:

توضیحات مربوط به UTF-8 در ویکی پدیا  (+).

Encode String to UTF-8 (+).

مطالب غیر مرتبط به این پست:

تبدیل رشته به عدد در جاوا (+).