function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
IvanWuIvanWu 

chinese characters can not display properly on VF page after import from a CSV file

hello ,guys
I have a csv file  and there are some chinese character in it ,I import it by apex code ,after import finished ,i will display the import data on a VF page ,I found that chinese characters can not display correctly ,I want to know why and how to resolve this problem .thanks in advance。
 
public with sharing class SalesforcastExcelController {
    
    public List<Sales_Forecast__c> Sales_ForecastList{get;set;}
    public Blob csvFileBody{get;set;}
    public string csvAsString{get;set;}
    public String[] csvFileLines{get;set;}
    public String operation{get;set;}
    public List<Sales_Forecast__c> Sf_importList{get;set;}
    public List<Sales_Forecast__c> Sf_DelList{get;set;}
    public List<Sales_Forecast__c> Sf_InsertList{get;set;}
    public List<Sales_Forecast__c> Sf_UpdateList{get;set;}
    public SalesforcastExcelController(){
        Sales_ForecastList=New List<Sales_Forecast__c>();
        Sf_importList=New List<Sales_Forecast__c>();
        Sf_DelList=New List<Sales_Forecast__c>();
        Sf_InsertList=New List<Sales_Forecast__c>();
        Sf_UpdateList=New List<Sales_Forecast__c>();
        csvFileLines = new String[]{};
            Date today=system.today();    
        Sales_ForecastList=[select Id,Name,OwnerId,Description__c,Foecast_Date__c,Forecast_Amount__c,IsThisMonth__c,Opportunity__c,Quantity__c,Product_Portfolio_Package_Series__c,Unit_Price__c from Sales_Forecast__c where  Foecast_Date__c<today];
    }
    
    public PageReference  ExportExcel(){
        
        return new PageReference('/apex/MQ_ExportPage');
    }
    public PageReference  ImportExcel(){
        
        return new PageReference('/apex/MQ_ImportPage');
    }
    
    public void importCSVFile(){
        try{
            Sf_importList.clear();
            Sf_DelList.clear();
            Sf_UpdateList.clear();
            HttpRequest request = new HttpRequest();
            request.setBodyAsBlob(csvFileBody);
            csvAsString = request.getBody();
            //csvAsString =csvFileBody.toString();
            csvFileLines = csvAsString.split('\n');             
            for(Integer i=1;i<csvFileLines.size();i++){
                Sales_Forecast__c Sales_Forecast = new Sales_Forecast__c();
                string[] csvRecordData = csvFileLines[i].split(',');
                
                if(String.isNotBlank(csvRecordData[0])){
                    Sales_Forecast.Id=csvRecordData[0];
                }            
                Sales_Forecast.Name__c = csvRecordData[1]; 
                Sales_Forecast.OwnerId=csvRecordData[2];
                Sales_Forecast.Product_Portfolio_Package_Series__c=csvRecordData[4];
                if(String.isNotBlank(csvRecordData[5])){
                    Sales_Forecast.Quantity__c=Decimal.valueOf(csvRecordData[5]);
                }
                
                if(csvRecordData[6].contains('/') ){
                    csvRecordData[6]=csvRecordData[6].replace('/','-');
                }
                Sales_Forecast.Foecast_Date__c =date.parse(csvRecordData[6]);
                Sales_Forecast.Description__c=csvRecordData[7];
                if(String.isNotBlank(csvRecordData[8])){
                    Sales_Forecast.Unit_Price__c=Decimal.valueOf(csvRecordData[8]);
                }
                Sales_Forecast.Opportunity__c = csvRecordData[9]; 
                if(String.isNotBlank(csvRecordData[11])){
                    Sales_Forecast.Forecast_Amount__c = Decimal.valueOf(csvRecordData[11]);
                }
                String tempOperation=csvRecordData[12];
                tempOperation=tempOperation.toUpperCase();  
                if(tempOperation=='DEL'){
                    Sf_DelList.add(Sales_Forecast);
                    operation='删除';                    
                }else{
                    if(tempOperation=='ADD'){
                        operation='新增';
                    }else{
                        operation='修改';
                    }
                    Sf_UpdateList.add(Sales_Forecast);
                    
                }
                Sales_Forecast.Operation__c=operation;
                Sf_importList.add(Sales_Forecast);
            }

        }
        catch (Exception e)
        {
            ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR,e.getMessage());
            ApexPages.addMessage(errorMessage);
        }  
    }
    public void RecordHandle(){
        try{
            delete Sf_DelList;
            upsert Sf_UpdateList;
            Sf_DelList.clear();
            Sf_UpdateList.clear();
            ApexPages.Message SuccessMessage = new ApexPages.Message(ApexPages.severity.CONFIRM,'导入成功!');
            ApexPages.addMessage(SuccessMessage);            
        }
        catch(Exception e)
        {
            ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR,e.getMessage());
            ApexPages.addMessage(errorMessage);
        }
    }
    
}