Good luck on finding a combination of export/import settings that work. Maybe the problem is in the import/export process, and a database link could be used to move the data from one system to the other? Worth a try! Worst case, maybe you can fake it out. Here's an idea, but God help you if the problem is in the key values too. You could build a table to hold the following: table_name pk_value column_name character_position character_code pk_value would hold the values of the pk columns, concatenated together, with a delimiter such as ~ between it. (Of course, that assumes ~ isn't a character in your data. Adjust to suit your conditions.) Character code should hold the numeric value you would plug into a chr() function for the character. Write a program that searches thru all the problem table/column combinations for each record in those tables, and record the special character values. Write another program to find the correct record and replace the ? character with the correct character. (This one may have to be adjusted, as the numeric values may mean something different in the new system. Have fun doing the research.) This is a darn ugly way to go about it. Depending upon the volume of your data, it may take forever. If you use single-column numeric primary keys for everything, the program will be a whole lot faster to run and much simpler to write. And, if you have to write this, please post it! -- //www.freelists.org/webpage/oracle-l