Oracle中varchar2、clob字段类型中特殊字符会显示为问号解决方法

news2024/10/6 8:30:25

项目中遇到varchar2、clob字段存储数据,内容中存在特殊字符导致显示问号,以下说明解决此问题的办法

首先我们查询下数据库编码、客户端编码、查询用户操作系统字符集

--查看oracle数据库编码
select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';
--查看oracle客户端编码
select * from nls_instance_parameters where parameter='NLS_LANGUAGE';
--查询用户操作系统字符集
select userenv('language') from dual;

我本地分别为:ZHS16GBK、AMERICAN、SIMPLIFIED CHINESE_CHINA.ZHS16GBK

1 字段类型为VARCHAR2

如下图所示,正常应该显示为HBV-DNA<1*10³-⁴copeis/ml:
在这里插入图片描述

1.1 解决方法:VARCHAR2更改为NVARCHAR2

我们把varchar2字段类型改为nvarchar2类型,我们只改一条数据用于测试,如下图可以正常显示
在这里插入图片描述


2 字段类型为CLOB

这边我们新建一个t_clob_lg表用于测试,一个字段类型为clob、另外一个字段类型为nclob
clob类型显示为:
在这里插入图片描述
nclob类型显示为:
在这里插入图片描述

2.1 解决方法:VARCHAR2更改为NVARCHAR2

如果已经存在了clob字段,更改原字段类型的时候需要注意:
在这里插入图片描述
我们需要新增一列,然后把正常的数据赋值给nclob,这样即可解决,当然,你也可以直接在设计表的时候,如果要存储字符型大型对象,请选择nclob,这样我们遇到特殊字符就不怕啦~

3 针对oracle中特殊字符显示问号选择NVARCHAR2和NCLOB而不选择varchar2和clob的原因:

3.1 在Oracle数据库中,特殊字符可能会导致数据存储和显示的问题。为了正确处理这些特殊字符,并确保数据的完整性和正确性,需要选择合适的数据类型。在处理包含特殊字符的文本数据时,通常建议优先选择NVARCHAR2NCLOB,而不是VARCHAR2CLOB,原因如下:

  1. 字符集支持

    • VARCHAR2CLOB使用数据库的默认字符集(通常为单字节字符集)进行存储,这可能导致在存储和检索包含多字节字符的数据时出现问题。
    • NVARCHAR2NCLOB支持Unicode字符集,可以处理包含多字节字符(如中文、日文、韩文等)的数据,并且不会丢失信息。
  2. 存储效率

    • NVARCHAR2NCLOB在存储Unicode数据时可以更有效地使用存储空间,因为它们采用了可变长度的字符编码(Variable Width Character Encoding)。
    • VARCHAR2CLOB使用固定长度字符编码(Fixed Width Character Encoding),可能会浪费存储空间,特别是在存储较短的文本时。
  3. 查询和索引效率

    • 由于NVARCHAR2NCLOB支持Unicode字符集,可以更有效地进行字符串比较和排序,因为这些数据类型考虑了字符的语言和区域设置。
    • VARCHAR2CLOB使用默认字符集,可能在某些情况下需要进行字符集转换,从而影响查询和索引的性能。
  4. 应用兼容性

    • 在现代的多语言国际化应用中,很可能会涉及到多种字符集和语言,因此使用支持Unicode的数据类型(NVARCHAR2NCLOB)可以更好地适应这些需求。
    • VARCHAR2CLOB可能无法正确存储和显示某些特殊字符,从而导致应用程序出现问题。

综上所述,选择NVARCHAR2NCLOB数据类型更适合处理包含特殊字符和多语言数据的场景,而VARCHAR2CLOB适合处理纯单字节字符数据。正确选择数据类型有助于确保数据的完整性和应用程序的稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/784306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库第十一课---------SQl语句的拔高-------水平提升

作者前言 个人主页::小小页面 gitee页面:秦大大 一个爱分享的小博主 欢迎小可爱们前来借鉴 ______________________________________________________ 目录 SQL提高 日期函数 length round reverse substring ifnull case when cast grouping sets 排序函数 开窗函…

从零到一,激活GPU的力量:使用TensorRT量化和CUDA并行编程

TensorRT学习笔记 前情提要:TensorRT 模型优化与推理:从零到一,激活GPU的力量:使用TensorRT优化和执行深度学习模型,你的TensorRT入门指南 本篇将会介绍TensorRT下的模型量化与CUDA并行计算编程的介绍。 TensorRT模型…

【雕爷学编程】Arduino动手做(170)---LGT8F328P 开发板

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

如何在3ds max中创建可用于真人场景的巨型机器人:第 2 部分

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 创建主体 步骤 1 打开 3ds Max。选择机器人头部后,二次单击鼠标并选择隐藏未选中。机器人的其他部分 除了头部之外,将被隐藏。 打开 3ds Max 步骤 2 在人脸选择模式下&#x…

自动化测试项目实战

目录 1.熟悉项目 2.针对核心流程设计手工测试用例 3.手工测试用例转换为自动化测试用例 前置工作 测试工作 登陆界面 博客列表页数量 博客详情页检验 写博客并发布 校验标题,时间 删除博客 注销博客 针对博客系统进行自动化测试 1.熟悉项目 2.针对核…

2023年9月北京/广州/深圳CDGA/CDGP认证考试报名开启

据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

AlSD 系列智能安全配电装置是安科瑞电气有限公司专门为低压配电侧开发的一款智能安全用电产 品-安科瑞黄安南

一、应用背景 电力作为一种清洁能源,给人们带来了舒适、便捷的电气化生活。与此同时,由于使用不当,维护 不及时等原因引发的漏电触电和电气火灾事故,也给人们的生命和财产带来了巨大的威胁和损失。 为了防止低压配电系统发生漏…

数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)

目录 算法概述 物理排序 复杂度分析 算法概述 表排序用于 待排元素都为一个庞大的结构,而不是一个简单的数字,例如:一本书,一部电影等等。 如果这些待排元素都用之前的排序方法,元素需要频繁互换,那么…

uniapp 即时通讯开发流程详解

今天我将为您详细介绍UniApp开发中的即时通讯流程。本文将向您展示如何在UniApp中实现即时通讯功能,为您的应用程序增添交互性和实时性。 1. 准备工作 在开始开发之前,确保您已完成以下准备工作: 确保您已经安装好UniApp开发环境&#xff…

实现简单Spring基于XML的配置程序

定义一个容器,使用ConcurrentHashMap 做为单例对象的容器 先解析beans.xml得到第一个bean对象的信息,id,class,属性和属性值使用反射生成对象,并赋值将创建好的bean对象放入到singletonObjects集合中提供getBean(id)方…

【Nodejs】Node.js开发环境安装

1.版本介绍 在命令窗口中输入 node -v 可以查看版本 0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性(比4.x多些),属于过渡产品,现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特性8.x 支持 ES6 特性 2.No…

下载python模块包

离线安装 在PyPI The Python Package Index 查找自己需要的安装包,直接下载对应操作系统的安装包即可 拿numpy举个例子,上面有好多类型的安装包,针对不同的操作系统,其中在文件名中可以看出有linus和macos等等,此外还…

论文笔记--Distilling the Knowledge in a Neural Network

论文笔记--Distilling the Knowledge in a Neural Network 1. 文章简介2. 文章概括3 文章重点技术3.1 Soft Target3.2 蒸馏Distillation 4. 文章亮点5. 原文传送门 1. 文章简介 标题:Distilling the Knowledge in a Neural Network作者:Hinton, Geoffre…

Macbook M1编译安装Java OpenCV

OpenCV-4.8.0编辑安装 查询编译依赖 brew info opencv确保所有需要模块都打上了✔,未打✔的需要使用brew进行安装 下载OpenCV源码 在此处下载OpenCV源代码,选择Source,点击此处下载opencv_contrib-4.8.0 或者使用如下命令,通…

gerrit 从安装到出坑

一般公司在做代码审核的时候选择codereview gerrit来处理代码的入库的问题。 它是通过提交的时候产生Change-Id: If4e0107f3bd7c5df9e2dc72ee4beb187b07151b9 来决定是不是入库,一般如果不是通过这个管理,那么就是我们通常的操作 git add . git comm…

【算法与数据结构】110、LeetCode平衡二叉树

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:二叉树遍历一共有前中后遍历和层序遍历,这道题只有后序遍历适合,求深度是从上往…

【小黄碎碎念】如何解析和替换字符串中的 Markdown 文本?正则表达式与 flexmark-java 库

前言 本周,笔者将之前的基于 Servlet 的个人博客项目进行了迭代,基于 SpringBoot SpringMVC Mybatis Redis 进行实现。额外实现密码的明文加密处理(加盐算法)、修改博客、公共主页等功能,并将 session 存储到 Redis…

深度学习——批标准化Batch Normalization

什么是批标准化? 批标准化(Batch Normalization)是深度学习中常用的一种技术,旨在加速神经网络的训练过程并提高模型的收敛速度。 批标准化通过在神经网络的每一层中对输入数据进行标准化来实现。具体而言,对于每个输…

我在VScode学Python(Python函数,Python模块导入)

我的个人博客主页:如果’真能转义1️⃣说1️⃣的博客主页 (1)关于Python基本语法学习---->可以参考我的这篇博客《我在VScode学Python》 (2)pip是必须的在我们学习python这门语言的过程中Python ---->&a…

fl studio 20如何设置中文汉化汇总及flstudio21水果language选项中文设置方法

fl studio这是一个编曲软件,它有中文和英文两种语言供大家选择,对我们来说,中文版肯定更方便。fl studio如何设置中文?事实上,只需在设置中切换中文即可。 我们一起 fl studio 20如何设置中文一些方法 一、fl studio手…