在 Oracle 中存储西里尔字母
我的 Oracle 数据库具有以下设置,
NLS_CHARACTERSET EE8MSWIN1250
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_LANGUAGE AMERICAN
我创建了包含一列 NVARCHAR2 类型的测试表,我将在其中存储西里尔字母。
我使用 SQL Developer 连接数据库。
问题是当我使用 SQL Developer 单元将西里尔字母链放入数据库时,数据存储正确。但是,当我使用 INSERT 查询来使用 N'' 或不使用 N'' 相同的数据时,数据将存储为问号。
有趣的是,由 SQL Developer 生成的查询和我编写的查询是相同的。
我通过将 NLS_CHARACTERSET 更改为 UTF8 解决了这个问题,但在生产服务器上我不能做这样的事情。
IMO 如果 SQL Developer 可以做到这一点,那么它必须是某种使用查询以正确的方式将西里尔字母存储到数据库中的方法。
问候
I have Oracle database with following settings
NLS_CHARACTERSET EE8MSWIN1250
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_LANGUAGE AMERICAN
I've created test table with one column of type NVARCHAR2, where I'm going to store cyrillic.
I use SQL Developer to connect DB.
The problem is when I put a cyrillic chain into DB using SQL Developer cell, the data is stored correctly. But when I use INSERT query with the same data using N'' or not the data is stored as question marks.
Interesting thing is that query generated by SQL Developer, and written by me is identical.
I solved this problem by changing NLS_CHARACTERSET to UTF8, but on production server I can't do such a thing.
IMO it must be some way to store cyrillic into that DB in proper way using query if SQL Developer can do that.
Regards
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据所使用的 ODBC/JDBC,计算机上的本地化设置可能会覆盖数据库中的任何配置值。在执行查询之前尝试使用 ALTER SESSION 并设置正确的 NLS 参数,看看是否有帮助。当您编辑数据单元格时,SQL 开发人员可能会在幕后执行此操作。
Depending on the ODBC/JDBC in use, localization settings on your computer may override any config values in the database. Try using
ALTER SESSION
and set the proper NLS parameters before executing your query, and see if that helps. SQL developer might do this behind the scenes when you edit the data cell.