我在oracle中有一个带有NVarchar列的表。当我插入下面的值时,它会转换为其他一些字符。
Insert INTO tbltest (CONTENT) Values(N'✓ à la mode δ')
Select * From tbltest
CONTENT
--------------------
¿ à la mode d
那么我应该采用什么数据类型来保存这种类型的数据。请建议。
答案 0 :(得分:0)
对于SQL Developer,我不知道确切的解决方案,但检查工具中的设置 - >偏好 - >环境 - >编码
选择支持您的字符的编码,例如UTF-8
关于您的C#代码:
多年来,适用于Oracle的Microsoft .NET Framework数据提供程序为deprecated,您不应在新项目中使用它。我认为开发在20年前停止了,因此它不支持Unicode字符 - 你不能使用它。
使用现代提供商,例如“Oracle Data Provider for .NET(ODP.NET)”,您可以从这里下载它:Oracle Data Access Components (ODAC) for Windows Downloads
对于“Oracle Data Provider for .NET”,您必须将NLS_LANG
设置为支持这些字符的编码,例如.AL32UTF8
。您可以将NLS_LANG
设置为环境变量,也可以将HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
设置为HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
(32位)。 ODP.NET Managed Driver
(64位)。
其他提供商(例如OraOLEDB
或Oracle const routes: Routes = [
{
path: 'path1',
loadChildren: 'app/modules/path1/path1.module#Path1Module',
canLoad: [AuthenticatedGuard]
},
{
path: 'path2',
loadChildren: 'app/modules/path2/path2.module#Path2Module',
canLoad: [AuthenticatedGuard]
},
.
.
.
{
path: 'login',
loadChildren: 'app/modules/login/login.module#LoginModule',
canLoad: [NotAuthenticatedGuard]
},
{ path: '', redirectTo: '/defaultPath', pathMatch: 'full' },
{ path: '**', component: PageNotFoundComponent, pathMatch: 'full', canActivate: [AuthenticatedGuard] }];
)对NLS_LANG不敏感。
在此处查看更多信息:OdbcConnection returning Chinese Characters as "?"
答案 1 :(得分:-1)
这是因为您的NLS_CHARACTERSET,NLS_NCHAR_CHARACTERSET数据库设置和NLS_LANG设置是您所看到的客户端。
由于您的值具有特定于您的语言的特殊字符,因此您需要设置该值。如下所示