gpt4 book ai didi

java - 存储和显示 ₹(卢比符号)html (xslt) -> java -> Sql Server 2016

转载 作者:行者123 更新时间:2023-11-28 23:24:53 25 4
gpt4 key购买 nike

我很难让 html 页面获取卢比符号 (₹),将其存储到 SQL Server 2016 数据库中,然后检索它以进行显示。

这里需要注意的是,我需要输入实际符号而不是 html 版本。

该页面的基本流程是管理员可以通过 Web 界面向应用程序添加新货币。有一个文本框,其中他们将输入实际的卢比符号 ₹ 并点击提交。然后通过 HttpServletRequest 将参数传递给 Java 后端。Java 后端只是将此值插入/更新到字段 nchar(10) 中的 SQL Server 2016 表。

当页面刷新时,它会对该表运行选择并显示所有有效货币。

问题在于,当 java 应用程序从 HttpServletRequest 请求对象中检索时,符号 ₹ 变为 â?¹。我可以在调试器,我明白这可能是由于我的调试器无法显示它,所以我继续。

java (jdbc) 更新字段。我使用 Sql Server Management Studio 查看该字段,它在文本和 GridView 中都显示 â?¹。我知道 SSMS 可以显示这个符号,因为我可以直接插入它并且它可以工作。所以看起来信息在 html>java 请求中丢失了。

网页本身是遗留的,使用 xslt 构建。我在下面添加了更多关于我所处位置的详细信息。

网站运行在tomcat 8上,页面使用xslt构建,后端是java。

在前端的 EditCurrency 页面中有一个文本字段。我在符号字段中输入 ₹ 并点击提交。

用于构建前端的xslt页面的相关片段是:

<!--header indicates page is utf8-->

            <xsl:param name="csrfToken"/>

<xsl:param name="currencyFormatError"/>

...



<!-- on submission the EditCurrency java class is called. method=POST indicates it should allow UTF8 request URL's as is my understanding-->



<form id="cmanager" name="cmanager" onsubmit="return(vNewCurrency())" action="../servlet/webpay.website.admin.EditCurrency" method="POST">

<input name="csrfToken" type="hidden" value="{$csrfToken}"/>

<table width="100%" cellpadding="0" cellspacing="0" border="0">

tomcat 8 服务器的 server.xml 设置为 UTF-8 编码。我知道这允许请求/响应处理 UTF-8:

    <Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8" />

Java 类 EditCurrency:

//Retrieves symbol from the HttpServletRequest req

//symbol returns â?¹

String symbol = (String) getParameter(PARAM_SYMBOL);

我还尝试使用以下方法设置 HttpServletRequest 请求,但它什么都不做:

try {

req.setCharacterEncoding("UTF-8");

} 捕获(UnsupportedEncodingException 前){

            java.util.logging.Logger.getLogger(EditCurrency.class.getName()).log(Level.SEVERE, null, ex);

SQL 服务器:

值 â?¹ 出现在 nchar(10) 字段中。

显示 html:

â?¹ 会在屏幕显示更新后的值时显示。

所以问题是我该如何解决这个问题!!??

我曾考虑过某种包含所有货币及其显示值等的引用表,但这似乎不是正确的做法。

最佳答案

除非链中的每个工具,包括您用来查看中间结果的任何工具,都支持 UTF-8,否则您在某些时候会看到垃圾。

卢比符号的 Unicode 代码点是 0x20B9,UTF-8 编码为三个字节 0xE2 0x82 0xB9。如果您尝试在使用 ISO-8859-1 的工具中显示它,您会看到

0xE2 = â   
0x82 = ? (there is no character in ISO-8859-1 for code 0x82, so you see a question mark)
0xB9 = ¹

所以看起来数据库中的符号是正确的,但你显示的不正确。

要“解决”这个问题,您必须确保您的工具都设置为 UTF-8,并且 Web 服务器配置为在它发送的 HTML 中包含 UTF-8 声明。

关于java - 存储和显示 ₹(卢比符号)html (xslt) -> java -> Sql Server 2016,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38578783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com