I have an SQL server 2019 with databases and tables all set with the collation Latin1\_General\_100\_CI\_AS\_SC\_**UTF8**.

The relevant table has `code` and `desc` columns which are both of data type **varchar**.

In SSIS project I have a single Data Flow component:

I have a UTF-8 CSV file read with flat file connection, text column `code` to match is `DT_STR, 65001`

I have a Lookup that is set to "Full Cache" and loads the Latin1\_General\_100\_CI\_AS\_SC\_**UTF8** table, but SSIS thinks the **varchar** columns are `DT_STR, 1252`

Finally the `code` in both CSV and lookup are matched and `desc` is sent to destination table which is on the same Latin1\_General\_100\_CI\_AS\_SC\_UTF8 collation. The destination component is set to `AlwaysUseDefaultCodePage True` and `DefaultCodePage 65001`.

I now get an error saying the column has more than one code page and cannot run the package.

If not for the mislabeled 1252, this package should run. I believe its something to do with `ExternalMetadataXml`, which is read-only and says all my lookup varchar columns are `CodePage="1252"`.

If I manually edit the package .dtsx with npp and replace all instances of 1252 with 65001, the package can run and seems to do what I expected, as long as I never touch the lookup component again.. That seems a bit messed up of a solution tho, I am hoping there's someone else who has a cleaner way to fix this. Thanks.

edit 2021/03/10: I thought I should clarify, the lookup is using OLE to read a table from the SQL server, and is trying to match `code` column onto the `code` column read from the flat file. The problem is **not** the flat file, which is already recognised as `DT_STR, 65001`. The problem is the Lookup widget reading from a table that should be 65001, somehow ends up with 1252. If I didn't use OLE, and instead read from a UTF8 flat file to create the Lookup widget, there is no error.