-
مشکل JDBC با زبان فارسی
چطور میتونم با درایور JDBC از دیتایبس داده های فارسی بگیرم؟(وقتی داده ها رو میگیرم علامت سوال نشون میده)
دیتابیس من Access هست. در زیرهم کدهای اتصال به دیتابیسم رو نوشتم.
Properties p=new Properties();
p.put("charSet", "UTF8");
dbURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+mydb;
connection=DriverManager.getConnection(dbURL,p);
st=connection.createStatement();
str="select * from plan where work='"+Find+"'";
System.out.print(Find);
rs=st.executeQuery(str);
-
نقل قول: مشکل JDBC با زبان فارسی
مشکل از data base نیست . چون که شما از System.out.print استفاده کردین و این دستور خروجی رو توی consol مینویسه ، و مسئله اینه که consol خروجی فارسی رو به شکل علامت سوال مینویسه .
-
نقل قول: مشکل JDBC با زبان فارسی
اتفاقا اصلا با System.out.print مشکلی ندارم و فارسی چاپ میکنه اون رو به دلیل دیگه ای گذاشتم.من داده هام رو از طریق JLabel چاپ میکنم.در JLabel علامت سوال نشون میده.(rs داده های فارسی رو بصورت علامت سوال برمیگردونه)
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
نوشته شده توسط
hossein71
چطور میتونم با درایور JDBC از دیتایبس داده های فارسی بگیرم؟(وقتی داده ها رو میگیرم علامت سوال نشون میده)
دیتابیس من Access هست. در زیرهم کدهای اتصال به دیتابیسم رو نوشتم.
Properties p=new Properties();
p.put("charSet", "UTF8");
dbURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+mydb;
connection=DriverManager.getConnection(dbURL,p);
st=connection.createStatement();
str="select * from plan where work='"+Find+"'";
System.out.print(Find);
rs=st.executeQuery(str);
dbURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+mydb+"?useEncoding=true&charact erEncoding=UTF-8";
-
نقل قول: مشکل JDBC با زبان فارسی
جناب javaphantomممنون ولی وقتی کد شمارو به صورت زیر جایگزین کردم نمیتونه به دیتابیس وصل بشه و قسمت catch اجرا میشه.
try{
dbURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+mydb+"?useEncoding=true&charact erEncoding=UTF-8";
connection=DriverManager.getConnection(dbURL);
st=connection.createStatement();
str="select * from plan where work='"+Find+"'";
rs=st.executeQuery(str);
while(rs.next())
Count++;
rs=st.executeQuery(str);
String array[][]=new String[Count][3];
int i=0;
while(rs.next()){
for(int j=0;j<3;j++)
array[i][j]=rs.getString(j+2);
i++;
}
return array;
}
catch(SQLException sqlEx) {
System.out.println("Cannot connect to database!");
return null;
}
-
نقل قول: مشکل JDBC با زبان فارسی
تو كد بين character فاصله افتاده اون فاصله نبايد باشه
-
نقل قول: مشکل JDBC با زبان فارسی
نه به خاطر اون نیست اون فاصله رو هم درست کردم فایده نداشت.
-
نقل قول: مشکل JDBC با زبان فارسی
من جای شما بودم یک تستی در reginal option می زدم یعنی location = iran - advaned = farsi - genral english
-
نقل قول: مشکل JDBC با زبان فارسی
منظورتون کنترل پنل ویندوزه؟یه خورده دقیقتر آدرس بدید ممنون میشم
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
نوشته شده توسط
hossein71
چطور میتونم با درایور JDBC از دیتایبس داده های فارسی بگیرم؟(وقتی داده ها رو میگیرم علامت سوال نشون میده)
دیتابیس من Access هست. در زیرهم کدهای اتصال به دیتابیسم رو نوشتم.
Properties p=new Properties();
p.put("charSet", "UTF8");
dbURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+mydb;
connection=DriverManager.getConnection(dbURL,p);
st=connection.createStatement();
str="select * from plan where work='"+Find+"'";
System.out.print(Find);
rs=st.executeQuery(str);
حالا اینجوری امتحان کن
Properties props = new Properties();
props.put ("charSet", "UTF-8");
dbURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+mydb+","+props;
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
نوشته شده توسط
MehdiRah
من جای شما بودم یک تستی در reginal option می زدم یعنی location = iran - advaned = farsi - genral english
از این روش فکر نکم جواب بگیری . به آخرین پست من برگرد و کاری که گفتم رو اتجام بده
-
نقل قول: مشکل JDBC با زبان فارسی
کاری رو که گفتید انجام دادم درست نشد.قسمت catch اجرا میشه.
مشکل از خود Access نیست؟
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
نوشته شده توسط
hossein71
کاری رو که گفتید انجام دادم درست نشد.قسمت catch اجرا میشه.
مشکل از خود Access نیست؟
این چی می گه
Properties properties=new Properties();
properties.setProperty("charSet","UTF-8");
Connection con = DriverManager.getConnection(url,properties);
-
نقل قول: مشکل JDBC با زبان فارسی
این حالتی که گفتید از اول همینجوری گذاشته بودم.در این حالت به دیتابیس وصل میشه ولی همونطور که در پست اول گفتم داده های فارسی از دیتابیس استخراج شده رو بصورت علامت سوال نشون میده.
Properties properties= new Properties();
properties.setProperty("charSet", "UTF-8");
dbURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+mydb;
connection=DriverManager.getConnection(dbURL,prope rties);
راستی در برنامه من بین properties فاصله نیفتاده این مشکل سایته که اینجوری شده.
-
نقل قول: مشکل JDBC با زبان فارسی
یعنی واقعا نمیشه در JDBC از زبان فارسی استفاده کرد?
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
نوشته شده توسط
hossein71
یعنی واقعا نمیشه در JDBC از زبان فارسی استفاده کرد?
شما اون access فایل رو انجا بزارید که فارسی داخلش هست تا بشه کاری کرد.
-
1 ضمیمه
نقل قول: مشکل JDBC با زبان فارسی
-
نقل قول: مشکل JDBC با زبان فارسی
دوستان برنامه MS Access JDBC Driver ارتباط مشکل من داره؟
-
نقل قول: مشکل JDBC با زبان فارسی
حالا برو بگو جاوا بده
public class MyTest {
public static final String MY_FILE = "c:/Hamed.mdb";
public static final String MY_URL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
public static final String SELECT_ALL = "select * from plan";
private List<MyModel> modelList;
public MyTest() {
try {
this.modelList = new ArrayList<MyModel>();
Properties properties= new Properties();
properties.put("charSet", "windows-1256");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection = DriverManager.getConnection(MY_URL + MY_FILE.trim(),properties);
PreparedStatement preparedStatement = connection.prepareStatement(SELECT_ALL);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
MyModel myModel = new MyModel();
myModel.setId(resultSet.getString("id"));
myModel.setDescription(resultSet.getString("descri ption"));
myModel.setTime(resultSet.getString("time"));
myModel.setWork(resultSet.getString("work"));
modelList.add(myModel);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
*
* @return
*/
public List<MyModel> getModelList() {
return modelList;
}
public static void main(String[] s) {
MyTest myTest = new MyTest();
for (MyModel myModel:myTest.getModelList()) {
System.out.println("myModel.getId() = " + myModel.getId());
System.out.println("myModel.getTime() = " + myModel.getTime());
System.out.println("myModel.getWork() = " + myModel.getWork());
System.out.println("myModel.getDescription() = " + myModel.getDescription());
System.out.println("****************************** ****************");
}
}
}
class MyModel {
private String id;
private String work;
private String time;
private String description;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
}
-
نقل قول: مشکل JDBC با زبان فارسی
تا وقتی شما هستی عمرا بگیم جاوا بده
بر اساس کدهایی که نوشتید برنامم رو بازنویسی کردم. کل کدهای کلاس دیتابیس برنامه من بصورت زیره. یه سوال، شما در برنامه بالا Properties رو import کردین؟
در این حالت به دیتابیس وصل میشه ولی بازهم علامت سوال نشون میده.
import java.sql.*;
import java.util.Properties;
public class DataBase {
public static final String dbURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
public static final String mydb="C:/Hamed.mdb";
int Count=0;
public String[][] Records(String Find)
{
try{
Properties properties= new Properties();
properties.put("charSet", "windows-1256");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection=DriverManager.getConnection(dbURL+mydb. trim(),properties);
String str="select * from plan where work='"+Find+"'";
PreparedStatement ps=connection.prepareStatement(str);
ResultSet rs=ps.executeQuery();
while(rs.next())
Count++;
rs=ps.executeQuery();
String array[][]=new String[Count][3];
int i=0;
while(rs.next()){
for(int j=0;j<3;j++)
array[i][j]=rs.getString(j+2);
i++;
}
return array;
}
catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
-
نقل قول: مشکل JDBC با زبان فارسی
شما مشکل اصلی تون همان encoding بود که اگر با windows-1256 که اونجا من اعمال کردم استفاده کنید باید مشکل کارتون حل بشه. چود دقیقا سمت من این اتقاف افتاد و اطلاعات رو راحت به فارسی دیدم
-
1 ضمیمه
نقل قول: مشکل JDBC با زبان فارسی
سلام
دوست عزیز خیلی ممنون زحمت دادم بهت.برنامه ای رو که برام فرستادی اجراش کردم بازهم رکوردهای فارسی رو علامت سوال نشون میده.در عکس زیر قسمتی که دورش خط کشیدم مشخص هست.به هر حال ممنون
یعنی واقعا کسی دیگه ای در این فوروم نمیدونه من باید چیکار کنم خیلی بهش نیاز دارم.
ضمیمه 92234
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
یعنی واقعا کسی دیگه ای در این فوروم نمیدونه من باید چیکار کنم خیلی بهش نیاز دارم.
حالا که چیزی نشده. دارم کمکت می کنم دیگه که حل بشه
می روی این سایت http://www.websina.com/bugzero/kb/ja...g-charset.html
می گردی توی این عربی ها کدوم استاندارد بهت جواب می ده. مثلا این جواب نداد windows-1256
شاید یک عربی دیگه مثل ISO8859_6 کارت رو راه انداخت. این رفتارا چیه از خودت نشون می دی.
مشکلت چیزه مهمی نیست برای همه پیش اومده
-
نقل قول: مشکل JDBC با زبان فارسی
هم Arabicها رو گذاشتم هم چندتای دیگه رو فایده نداشت.(هنوز علامت سوال برمیگردونه)
در بالای این جدولها(سایتی که بهم معرفی کردی)گفته از charsets.jar استفاده میکنه.نباید اینهارو در پروژه import کنم؟
همینطور java.nio،java.io و java.lang
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
نوشته شده توسط
hossein71
هم Arabicها رو گذاشتم هم چندتای دیگه رو فایده نداشت.(هنوز علامت سوال برمیگردونه)
در بالای این جدولها(سایتی که بهم معرفی کردی)گفته از charsets.jar استفاده میکنه.نباید اینهارو در پروژه import کنم؟
همینطور java.nio،java.io و java.lang
اون که نه درست هست چون توی rt.jar هست پس حله.
به جای charSet از این استفاده کن characterEncoding
توی قسمت properties ها ببین چی می شه
-
نقل قول: مشکل JDBC با زبان فارسی
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
نوشته شده توسط
hossein71
فایده نداشت
کدت رو بزار تو سایت
-
نقل قول: مشکل JDBC با زبان فارسی
نقل قول:
نوشته شده توسط
hossein71
کدهای کل پروژه ام رو ضمیمه کردم.
فقط آدرس دیتابیس رو حواست باشه که درست باشه
با jdk 1.6 کامپایل کن و برو همون برنامه ا ی که بهت دادم که کامل بود با charSet ی که windows-1256 بود. من برنامت رو ران کردم و هیچ مشکلی نداشت با charSet windows-1256 شاید مشکل jdk باشه که باز من بعیید می دونم ولی امتحان کن
-
نقل قول: مشکل JDBC با زبان فارسی
راستی اینم یک خروجی از برنامت
f2012-05-04 00:00:00fghfdhhhsdhn2012-07-03 00:00:00hgjfghjfgjfgjb2012-06-02 00:00:00سلام حسينn2012-07-03 00:00:00sgjfggfgjfgjn2012-07-03 00:00:00fhn2012-07-03 00:00:00rhsrdhn2012-07-03 00:00:00hgn2012-07-03 00:00:00igghjfghjfhdfgjfgjسnullسلام عل
-
نقل قول: مشکل JDBC با زبان فارسی
با Jdk 6 برنامه شما رو اجرا کردم فایده نداشت.یه دور Jdk رو پاک کردم رفتم از یه سایت دیگه دانلود کردم دوباره نصب کردم فایده نداشت.یه دور netbeans رو پاک کردم رفتم از یه سایت دیگه دانلود کردم فایده نداشت.
-
5 ضمیمه
نقل قول: مشکل JDBC با زبان فارسی
دوست عزیز جناب javaphantom مشکل بالاخره حل شد.
دو کار باید انجام بشه یکی اینکه همونطور که شما گفتید charset باید روی windows-1256 باشه یکی دیگه هم که نمیدونستم تنظیمات control Panel ویندوز هست.
در عکس های زیر مرحله به مرحله مشخصه باید چیکار بکنیم.
ضمیمه 92425
ضمیمه 92426
ضمیمه 92428
ضمیمه 92427
ضمیمه 92429https://barnamenevis.org/images/misc/pencil.png
-
نقل قول: مشکل JDBC با زبان فارسی
خوب خدارو شکر که کارتون راه افتاد. من کاری نکردم. خودت بودی که فهمیدی مشکل چیه. موفق باشی