_UTF8 prefix for string values does not work with WIN1252 charset
-----------------------------------------------------------------
Key: DNET-933
URL: http://tracker.firebirdsql.org/browse/DNET-933
Project: .NET Data provider
Issue Type: Bug
Components: Entity Framework
Affects Versions: 7.5.0.0
Reporter: Daniel Richter
Assignee: Jiri Cincura
For string values in queries, the generated SQL results in inline values with the prefix "_UTF8". E.g,
dataContext.Articles.Where(a => a.Name=="Mülltüte")
generates SQL such as
SELECT * FROM "ARTICLE" WHERE "NAME"=_UTF8'Mülltüte'
That works as long as the connection charset is set to "UTF8". In case the connection string defines a charset such as "WIN1252" the execution throws an error "Dynamic SQL Error, SQL error code = -104, Malformed string" (when e.g. the value contains an umlaut).
After removing the "_UTF8" prefix everything works fine (both WIN1252 and UTF8 charset):
SELECT * FROM "ARTICLE" WHERE "NAME"='Mülltüte'
Because of the following code in SqlGenerator.cs, Visit(DbConstantExpression)
// constant is always considered Unicode
isUnicode = true;
The "_UTF8" prefix will always be generated - no matter which charset was used to connect.
In my opinion it is not possible to use string values in queries with charsets other than UTF8. The "_UTF8" prefix should only be added in case the database connection uses UTF8, too.
Otherwise: Is it safe to connect via UTF8 to a database with WIN1252 as charset for columns or are there any side effects?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
|