Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка и проблемы с ней, DBF to DBF 
V
    Опции темы
agR
Дата 20.7.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Необходимо один DBF файл разбить на несколько других. То есть часть инфы в одну сторону, а часть - в другую.
Для чтения данных использую мост jdbc:odbc , а для создания новых DBF-ок приходится пользоваться JavaDBF, т.к. оказывается нормально создать табличку jdbc:odbc не в состоянии (зато хоть читает норм ;)). 
Исходный файл содержит кириллицу, которая в новых файлах отображается в виде "???" и др. символах (в зависимости от кодировки).
Перебрал уйму кодировок, но так и не привел строки в чувство.
По идее файл имеет кодировку cp866 (DOS),  для чтения использую такое соединение:
Код

public static Connection createConnection() throws Exception {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Properties connInfo = new Properties();
        connInfo.put("charSet","cp866");
        String url = "jdbc:odbc:Driver={Microsoft dBase Driver (*.dbf)};DBQ=C:\\MAT_NEW\\BASE";
        Connection con = DriverManager.getConnection(url,connInfo);
        return con;
    }

потом в массив заношу значения:
Код

oldString[0][i-2] = rs.getString(2); // rs - ResultSet rs = st.executeQuery("SELECT * FROM OF.DBF");

Для записи пользуюсь классом:
Код

class WriteDBF {
    DBFdeCoder fr = new DBFdeCoder();
    public WriteDBF() throws DBFException, FileNotFoundException, IOException {
        
        String[][] oldString = fr.getOldString();
        
        DBFWriter writer = new DBFWriter();
        DBFField[] fields = new DBFField[18];
        
        //NAME
        fields[0] = new DBFField();
        fields[0].setName("NAME");
        fields[0].setDataType(DBFField.FIELD_TYPE_C);
        fields[0].setFieldLength(40);
        
        //NNOM
        fields[1] = new DBFField();
        fields[1].setName("NNOM");
        fields[1].setDataType(DBFField.FIELD_TYPE_C);
        fields[1].setFieldLength(10);
        
        //PERSON
        fields[2] = new DBFField();
        fields[2].setName("PERSON");
        fields[2].setDataType(DBFField.FIELD_TYPE_C);
        fields[2].setFieldLength(20);
        
        //CEX
        fields[3] = new DBFField();
        fields[3].setName("CEX");
        fields[3].setDataType(DBFField.FIELD_TYPE_C);
        fields[3].setFieldLength(20);
        
        //DAT
        fields[4] = new DBFField();
        fields[4].setName("DAT");
        fields[4].setDataType(DBFField.FIELD_TYPE_D);
        
        //GROUP
        fields[5] = new DBFField();
        fields[5].setName("GROUP");
        fields[5].setDataType(DBFField.FIELD_TYPE_C);
        fields[5].setFieldLength(1);
        
        //NAZNACH
        fields[6] = new DBFField();
        fields[6].setName("NAZNACH");
        fields[6].setDataType(DBFField.FIELD_TYPE_C);
        fields[6].setFieldLength(1);
        
        //ARENDA
        fields[7] = new DBFField();
        fields[7].setName("ARENDA");
        fields[7].setDataType(DBFField.FIELD_TYPE_C);
        fields[7].setFieldLength(1);
        
        //STATUS
        fields[8] = new DBFField();
        fields[8].setName("STATUS");
        fields[8].setDataType(DBFField.FIELD_TYPE_C);
        fields[8].setFieldLength(1);
        
        //KOEF
        fields[9] = new DBFField();
        fields[9].setName("KOEF");
        fields[9].setDataType(DBFField.FIELD_TYPE_N);
        fields[9].setFieldLength(13);
        fields[9].setDecimalCount(6);
        
        //KINDEX
        fields[10] = new DBFField();
        fields[10].setName("KINDEX");
        fields[10].setDataType(DBFField.FIELD_TYPE_N);
        fields[10].setFieldLength(13);
        fields[10].setDecimalCount(6);
        
        //DRAG_MET
        fields[11] = new DBFField();
        fields[11].setName("DRAG_MET");
        fields[11].setDataType(DBFField.FIELD_TYPE_N);
        fields[11].setFieldLength(13);
        fields[11].setDecimalCount(6);
        
        //NOTE
        fields[12] = new DBFField();
        fields[12].setName("NOTE");
        fields[12].setDataType(DBFField.FIELD_TYPE_C);
        fields[12].setFieldLength(160);
        
        //CODE
        fields[13] = new DBFField();
        fields[13].setName("CODE");
        fields[13].setDataType(DBFField.FIELD_TYPE_C);
        fields[13].setFieldLength(12);
        
        //SUMPR
        fields[14] = new DBFField();
        fields[14].setName("SUMPR");
        fields[14].setDataType(DBFField.FIELD_TYPE_N);
        fields[14].setFieldLength(16);
        fields[14].setDecimalCount(2);
        
        //SHET
        fields[15] = new DBFField();
        fields[15].setName("SHET");
        fields[15].setDataType(DBFField.FIELD_TYPE_C);
        fields[15].setFieldLength(6);
        
        //TYP
        fields[16] = new DBFField();
        fields[16].setName("TYP");
        fields[16].setDataType(DBFField.FIELD_TYPE_C);
        fields[16].setFieldLength(1);
        
        //SCH_Z
        fields[17] = new DBFField();
        fields[17].setName("SCH_Z");
        fields[17].setDataType(DBFField.FIELD_TYPE_C);
        fields[17].setFieldLength(6);
        
        writer.setFields(fields);
        Date now = new Date();
        Object rowData[] = new Object[18];
        rowData[0] = "1.name";
        rowData[1] = "2.nnom";
        rowData[2] = "3.person";
        rowData[3] = "4.cex";
        rowData[4] = now;
        rowData[5] = "1";
        rowData[6] = "1";
        rowData[7] = "1";
        rowData[8] = "1";
        rowData[9] = new Double(1.5);
        rowData[10] = new Double(1.5);
        rowData[11] = new Double(1.5);
        //rowData[12] = new String(oldString[0][51].getBytes("***"),"***"); что тока не подставлял =\
        rowData[12] = oldString[0][51];
        rowData[13] = "14.code";
        rowData[14] = new Double(5000.0);
        rowData[15] = "15.sc";
        rowData[16] = "1";
        rowData[17] = "16.sch";
        writer.addRecord(rowData);
        //OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream("C:\\MAT_NEW\\BASE\\OSN_NEW.DBF", true), "cp1251"));
        FileOutputStream fos = new FileOutputStream("C:\\MAT_NEW\\BASE\\OSN_NEW.DBF");
        writer.write(fos);
        fos.close();
                
    }
}

в файле OSN_NEW.DBF 13 поле будет отображено неправильно. То же будет и с другими полями если в них ввести кириллицу.
Помогите плз...
П.С. Если не выйдет заставят делать на Delphi..... не дайте им сделать это!  smile 

PM MAIL ICQ   Вверх
fixxer
Дата 20.7.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Это одноразовая процедура, или нужно делать периодически?

Во-первых, проверьте, а читаются даные корректно? (в rs.getString(2)).

Для работы с dbf через JDBC-ODBC рекомендую http://download.microsoft.com/download/vfo...-US/VFPODBC.msi

Это сообщение отредактировал(а) fixxer - 20.7.2007, 12:47


--------------------
user posted image
PM MAIL ICQ   Вверх
AntonSaburov
Дата 20.7.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



А разве кодовая страница не cp1251 ?
PM MAIL WWW ICQ   Вверх
fixxer
Дата 20.7.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Цитата(AntonSaburov @ 20.7.2007,  12:41)
А разве кодовая страница не cp1251 ?

Смотря как/где файлик сделан. Если в FoxPro 2.6, то запросто 866.

agR, опишите задачи поподробнее, возможно удастся обойтись "INSERT INTO ... SELECT ... FROM ... WHERE ..."

Это сообщение отредактировал(а) fixxer - 20.7.2007, 12:51


--------------------
user posted image
PM MAIL ICQ   Вверх
agR
Дата 20.7.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Цитата(fixxer @  20.7.2007,  12:35 Найти цитируемый пост)
Это одноразовая процедура, или нужно делать периодически?

Одноразовая... типа старое в новое, а потом идет работа с новым, а на старое забивается.
Цитата(fixxer @  20.7.2007,  12:35 Найти цитируемый пост)
Во-первых, проверьте, а читаются даные корректно? (в rs.getString(2)).

Все читается корректно. Ставил в charSet cp1251 - в консоли выглядит так как надо.
Цитата(AntonSaburov @  20.7.2007,  12:41 Найти цитируемый пост)
А разве кодовая страница не cp1251 ? 

Где, кем и как создавалась база мне не известно, хотя процентов 60-70 в каком-то DOS-приложении.
PM MAIL ICQ   Вверх
fixxer
Дата 20.7.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Если одноразовая, то проще всего взять Visual FoxPro и все сделать там. (Даже чисто на SQL'е)


--------------------
user posted image
PM MAIL ICQ   Вверх
agR
Дата 20.7.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Цитата(fixxer @  20.7.2007,  13:01 Найти цитируемый пост)
Если одноразовая, то проще всего взять Visual FoxPro и все сделать там. (Даже чисто на SQL'е) 

В том то и дело, что делать это буду не я.
То есть моя задача написать прогу, а люди потыкав на кнопки получат результат.
В общем программка необходима smile
PM MAIL ICQ   Вверх
agR
Дата 20.7.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Цитата(fixxer @  20.7.2007,  12:48 Найти цитируемый пост)
agR, опишите задачи поподробнее, возможно удастся обойтись "INSERT INTO ... SELECT ... FROM ... WHERE ..."

Хммм.... в jdbc:odbc я не уверен, т.к. если он базу создать не может, то где гарантия, что он и строки нормально вставит. Хотя читает он хорошо.  
PM MAIL ICQ   Вверх
fixxer
Дата 20.7.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Я Вам дал ссылку на драйвер. Он должен поддерживать расширенный синтаксис SQL

А как Вы таблицу пробовали создать? Через DDL?

Это сообщение отредактировал(а) fixxer - 20.7.2007, 13:47


--------------------
user posted image
PM MAIL ICQ   Вверх
agR
Дата 20.7.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Цитата(fixxer @  20.7.2007,  13:44 Найти цитируемый пост)
А как Вы таблицу пробовали создать? Через DDL?

Нет.
Создание написано в первом посте после слов:
Цитата(agR @  20.7.2007,  12:27 Найти цитируемый пост)
Для записи пользуюсь классом:

Вот так и создаю. JavaDBF работает через свои методы.
Код


        .........

        writer.addRecord(rowData);
        FileOutputStream fos = new FileOutputStream("C:\\MAT_NEW\\BASE\\OSN_NEW.DBF");
        writer.write(fos);
        fos.close();

        .........



Цитата(fixxer @  20.7.2007,  13:44 Найти цитируемый пост)
Я Вам дал ссылку на драйвер. Он должен поддерживать расширенный синтаксис SQL

Спасибо. Сейчас будем смотреть.
PM MAIL ICQ   Вверх
fixxer
Дата 20.7.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Цитата(agR @ 20.7.2007,  13:55)
Цитата(fixxer @  20.7.2007,  13:44 Найти цитируемый пост)
А как Вы таблицу пробовали создать? Через DDL?

Нет.
Создание написано в первом посте после слов:
Цитата(agR @  20.7.2007,  12:27 Найти цитируемый пост)
Для записи пользуюсь классом:

Вот так и создаю. JavaDBF работает через свои методы.
Код


        .........

        writer.addRecord(rowData);
        FileOutputStream fos = new FileOutputStream("C:\\MAT_NEW\\BASE\\OSN_NEW.DBF");
        writer.write(fos);
        fos.close();

        .........



Нет, когда пробовали через jdbc:odbc

Добавлено через 1 минуту и 31 секунду
Вообще подозреваю, что дело в JavaDBF. Он запросто может не прописывать кодовую страницу в файл.


--------------------
user posted image
PM MAIL ICQ   Вверх
agR
Дата 20.7.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Вот тут я тогда описал проблему.
Где-то потом прочитал, что jdbc:odbc на данный момент поддерживает лишь корректное чтение.

Есть метод setCharactersetName(), но он походу не работает.  smile
 

Это сообщение отредактировал(а) agR - 20.7.2007, 14:14
PM MAIL ICQ   Вверх
fixxer
Дата 20.7.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



О! А вы javadoc на JavaDBF читали? У суперкласса DBFWriter'а DBFBase есть метод setCharactersetName(String). Моя чувствительная жопа подсказывает, что это должно помочь. Правда не уверен в том в каком формате нужно задавать это имя. Поиграйтесь, посмотрите доки.

Это сообщение отредактировал(а) fixxer - 20.7.2007, 14:14


--------------------
user posted image
PM MAIL ICQ   Вверх
agR
Дата 20.7.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Цитата(fixxer @  20.7.2007,  14:13 Найти цитируемый пост)
Поиграйтесь, посмотрите доки.

Этим сейчас и занимаюсь smile

Добавлено через 4 минуты и 1 секунду
Цитата(agR @  20.7.2007,  14:02 Найти цитируемый пост)
Есть метод setCharactersetName(), но он походу не работает.  smile

Так и есть, он не работает. Ставил ср1251 и ср866
Проверил при помощи проги - файлы идентичны.

Это сообщение отредактировал(а) agR - 20.7.2007, 14:15
PM MAIL ICQ   Вверх
fixxer
Дата 20.7.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Цитата(agR @ 20.7.2007,  14:15)
Так и есть, он не работает. Ставил ср1251 и ср866
Проверил при помощи проги - файлы идентичны.

А вот и неправда Ваша. Работает. Как cp1251 так и cp866.
Пример содрал из туториала, только заменил поле во второй записи на русское слово "Тест"

Код

import com.linuxense.javadbf.*;
import java.io.*;

public class DBFWriterTest {

  public static void main( String args[])
  throws DBFException, IOException {

    // let us create field definitions first
    // we will go for 3 fields
    //
    DBFField fields[] = new DBFField[ 3];

    fields[0] = new DBFField();
    fields[0].setName( "emp_code");
    fields[0].setDataType( DBFField.FIELD_TYPE_C);
    fields[0].setFieldLength( 10);

    fields[1] = new DBFField();
    fields[1].setName( "emp_name");
    fields[1].setDataType( DBFField.FIELD_TYPE_C);
    fields[1].setFieldLength( 20);

    fields[2] = new DBFField();
    fields[2].setName( "salary");
    fields[2].setDataType( DBFField.FIELD_TYPE_N);
    fields[2].setFieldLength( 12);
    fields[2].setDecimalCount( 2);

    DBFWriter writer = new DBFWriter();
    writer.setCharactersetName("cp866");
    writer.setFields( fields);

    // now populate DBFWriter
    //

    Object rowData[] = new Object[3];
    rowData[0] = "1000";
    rowData[1] = "John";
    rowData[2] = new Double( 5000.00);

    writer.addRecord( rowData);

    rowData = new Object[3];
    rowData[0] = "1001";
    rowData[1] = "\u0422\u0435\u0441\u0442";
    rowData[2] = new Double( 3400.00);

    writer.addRecord( rowData);

    rowData = new Object[3];
    rowData[0] = "1002";
    rowData[1] = "Rohit";
    rowData[2] = new Double( 7350.00);

    writer.addRecord( rowData);

    FileOutputStream fos = new FileOutputStream( args[0]);
    writer.write( fos);
    fos.close();
  }
}



--------------------
user posted image
PM MAIL ICQ   Вверх
agR
Дата 20.7.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Цитата(fixxer @  20.7.2007,  13:44 Найти цитируемый пост)
Я Вам дал ссылку на драйвер. Он должен поддерживать расширенный синтаксис SQL

Сдается мне он работает еще хуже чем прошлый.
База так и не создалась. Та и ведет он себя неадекватно.
Но все равно, спасибо.

Добавлено через 6 минут и 39 секунд
Цитата(fixxer @  20.7.2007,  14:44 Найти цитируемый пост)
А вот и неправда Ваша. Работает. Как cp1251 так и cp866.
Пример содрал из туториала, только заменил поле во второй записи на русское слово "Тест"


аааАААааааААаааааа!!!!!!!!!!!!!!!!!!!!!!!!!!!
Работает!!!  smile  smile  smile 
fixxer, позвольте вам выразить свое восхищение!!!!
Огромное спасибо, за потраченное время.

PM MAIL ICQ   Вверх
AntonSaburov
Дата 20.7.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Плюс fixxer явно заслужил.
PM MAIL WWW ICQ   Вверх
Kisja
Дата 31.7.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 30.7.2007

Репутация: нет
Всего: нет



Цитата(fixxer @ 20.7.2007,  14:44)
А вот и неправда Ваша. Работает. Как cp1251 так и cp866.
Пример содрал из туториала, только заменил поле во второй записи на русское слово "Тест"

И как же Вам удалось єто заставитт работать нормально.
Я запускаю этот скрипт (когда writer.setCharactersetName("cp866");) у себя, создаеться дбф-файл с нужной структурой, но записей нет, а в консоль мне выдает:

Exception in thread "main" com.linuxense.javadbf.DBFException: Cp866
    at com.linuxense.javadbf.DBFWriter.write(DBFWriter.java:246)
    at DBFWriterTest.main(DBFWriterTest.java:59)

когда устанавливаю кодовою страницу cp1251 (writer.setCharactersetName("cp1251");), файл создаеться нормально, но вместо кирилицы (вместо слова "тест") в поле дбв-файла вижу "TхёЄ".

Помогите разобраться с кодировками.
PM MAIL   Вверх
agR
Дата 1.8.2007, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Репутация: 2
Всего: 2



Вот тот код, который работает у меня (ненужное вырезано). Проверьте, может в чем-то вы ошиблись.
Код

package DBFdeCoder;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

import com.linuxense.javadbf.DBFException;
import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFWriter;

class WriteDBF {
    private ReadDBF db;
    
    public WriteDBF() throws Exception {

        .......................

        
        DBFWriter writer = new DBFWriter();

        writer.setCharactersetName("cp866"); //!!!!!!!!!!!!!!

        DBFField[] fields = new DBFField[18];
        
        //NAME
        fields[0] = new DBFField();
        fields[0].setName("NAME");
        fields[0].setDataType(DBFField.FIELD_TYPE_C);
        fields[0].setFieldLength(40);
        
        //NNOM
        fields[1] = new DBFField();
        fields[1].setName("NNOM");
        fields[1].setDataType(DBFField.FIELD_TYPE_C);
        fields[1].setFieldLength(10);
        
        //PERSON
        fields[2] = new DBFField();
        fields[2].setName("PERSON");
        fields[2].setDataType(DBFField.FIELD_TYPE_C);
        fields[2].setFieldLength(20);
        
        ..............................
                //и еще 15 подобных созданий полей
        
        writer.setFields(fields);
        Date now = new Date();
        Object rowData[] = new Object[18];
        rowData[0] = "Русский текст";
        rowData[1] = "Русский текст";
        rowData[2] = "Русский текст";
        rowData[3] = "Русский текст";
        rowData[4] = now;
        rowData[5] = "1";
        rowData[6] = "1";
        rowData[7] = "1";
        rowData[8] = "1";
        rowData[9] = new Double(1.5);
        rowData[10] = new Double(1.5);
        rowData[11] = new Double(1.5);
        rowData[12] = oldString[0][0];// здесь кстати тоже русский текст
        rowData[13] = "14.code";
        rowData[14] = new Double(5000.0);
        rowData[15] = "15.sc";
        rowData[16] = "1";
        rowData[17] = "16.sch";
            
        writer.addRecord(rowData);
        FileOutputStream fos = new FileOutputStream("\\Путь к файлу\\");
        writer.write(fos);
        fos.close();
        }
}

Пример тестовый... но главное - работает.

Может у вас нет самой кодировки... Тогда вам сюда 


Это сообщение отредактировал(а) agR - 1.8.2007, 11:28
PM MAIL ICQ   Вверх
Kisja
Дата 2.8.2007, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 30.7.2007

Репутация: нет
Всего: нет



Цитата(agR @  1.8.2007,  01:51 Найти цитируемый пост)
Может у вас нет самой кодировки... Тогда вам сюда


Действительно кодировок не было.
Я подозревала, что что то те так в системе, так как под линуксом все работало без проблем.

Спасибо, помогли.
PM MAIL   Вверх
diablero
Дата 20.8.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 1
Всего: 5



Код

writer.setCharactersetName("cp866");

Но до конца, есть проблема например с ковычками («), они заменяются на ?

Как такое решить?


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
fixxer
Дата 20.8.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Цитата(diablero @ 20.8.2009,  13:08)
Код

writer.setCharactersetName("cp866");

Но до конца, есть проблема например с ковычками («), они заменяются на ?

Как такое решить?

вопрос в том, есть ли такие кавычки (французские - «) в стандартном наборе символов cp866


--------------------
user posted image
PM MAIL ICQ   Вверх
diablero
Дата 20.8.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 1
Всего: 5



Цитата(fixxer @  20.8.2009,  13:56 Найти цитируемый пост)
вопрос в том, есть ли такие кавычки (французские - «) в стандартном наборе символов cp866


Они есть в 1251, а в 866 их нет, есть только ".


Получается что необходимо в строке проверять их наличие и заменять аналогами. Но это не айс.


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0760 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.