zoukankan      html  css  js  c++  java
  • [已无效]Azure上部署的java app在向第三方服务传送中文时出现乱码

     https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-java-qa-solve-messy-code-during-sending-chinese-characters-to-third-party-services 

    ----------------------------------------------分割线--------------------------------------------------------------------------

    部署在Azure 上的Web APP应用在向第三方传送中文字符串时,第三方服务接受到的是类似于??之类的乱码,而本地运行发送是正常的

    这个是由于APP Service 环境的默认编码为GBK,在向第三方发送数据时要做默认的转码工作,即执行new String(”您要传送的字符串”.getBytes(),”UTF-8”),而getBytes方法如果没有参数的话会使用系统默认的编码方式编码,由于gbk编码和utf-8编码方式不同,这个是个大坑,具体的大家可以百度一下gbk转utf-8编码,所以在转换之后会出现乱码的现象。

    ,解决方法是改变jvm默认的编码方式(改变系统的默认编码方式也可以,不过Azure上不允许改变系统默认的编码方式),在site/wwwroot文件夹下创建web.config文件(如果已经有请直接修改),添加以下内容:

    <configuration>
      <system.webServer>
        <handlers>
          <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
        </handlers>
        <httpPlatform processPath="%AZURE_TOMCAT85_HOME%instartup.bat" arguments="">
          <environmentVariables>
            <environmentVariable name="JAVA_OPTS" value="-Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8" />
          </environmentVariables>
        </httpPlatform>
      </system.webServer>
    </configuration>
    

    最新更新:目前Azure Web APP环境已默认修改成UTF-8编码,该文档失效。不过仍然可以通过该方法修改jvm的编码方式。

  • 相关阅读:
    css clear
    设置 系统软件
    Canvas 生成 bitmap
    HashTable
    JSF
    android 自定义 锁屏
    java socket
    php mysql 配置
    mysql 启动方法
    jQuery 表格
  • 原文地址:https://www.cnblogs.com/junshijie/p/9842157.html
Copyright © 2011-2022 走看看