Just encountered a problem, the other side of the server environment for Linux, in accordance with the general Sqlldr import data, through the Plsql query found to be a question mark and garbled.
Through the SELECT * from V$nls_parameters of the database, the character encoding Nls_characterset of the database is detected as American_america. ZHS16GBK, but Nls_nchar_characterset for AL16UTF16.
Then, on the server, modify the Oracle and root user's. Bash_profile and profile, add character encoding to set export Nls_lang=american_america. ZHS16GBK;
Enter regedit in cmd, find the ORACLE nls_characterset of this machine, my address is hkey_local_machine/software/oracle/nls_lang, change it to American_ AMERICA. ZHS16GBK.
Will import the data file CSV through the tool, my is UltraEdit, save as ANSI, add the language control code CHARACTERSET ZHS16GBK in the control file CTL.
Next, you should be able to import the data. (Remember Plsql to reopen after the change)