拆分字符串时如何处理cp1252编码包含日文字符

时间:2014-06-04 09:33:46

标签: java character-encoding

我正在逐行读取csv文件,并在此基础上分隔每一行     tab delimiter。文件中有一行如下: -

“\”255U-2968RYE \“\”组织\“\”SMBC日兴证券株式会社\“\”2968RYE \“

我使用了分割功能格式分割(“\ t(?=([^ \”] \“[^ \”] \“) [^ \”] $)“, - 1)。在我看来    split函数应该返回一个大小为4的String数组。但它不能像我一样工作    期待。我尝试在eclipse中更改编码类型并使用不同的-2,如utf-8,    ISO-8859-1但没有奏效。文件是csv格式。我正在使用CSV打开它     来源api。如下图所示。

    String read[];      
    int row = 0;
    int columns = 0;
    int totalElement = 0;
    String msg = null;  
    int cols = (int) Double. parseDouble(totalColumns);

    try
    {
    CSVReader reader = new CSVReader(new FileReader(filePath),'\n');
    if(titleAllowed.equalsIgnoreCase("yes"))
        reader.readNext();
    while((read=(reader.readNext()))!=null)         
    {   
        row++;      
        if(row==1)
        {               
        columns = (read[0].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)",-1)).length;

         if(cols !=columns)
         {
     JOptionPane.showMessageDialog(null, "Columns not matched as mentioned in checkList");
             return false;
         }

        }       
        if((columns!=0)&&(columns!=read[0].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)",-1).length))
        {
            msg = "Error exists in line "+row;
            return false;
        }
        if(!read[0].equals(""))
            totalElement+=(read[0].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)",-1)).length;                     
    }
    reader.close();
    }catch(Exception e)
    {           
        e.printStackTrace();
    }       
    if(null!=msg)
    {
        JOptionPane.showMessageDialog(null, msg);
    }       
    return (totalElement==row*columns);

非常感谢正确答案。提前致谢

0 个答案:

没有答案