JAVA中通过socket得到的字符串是乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中通过socket得到的字符串是乱码相关的知识,希望对你有一定的参考价值。

我在java中读入的时候指定了utf8,
inbound = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "UTF-8"));

然后我打印每一行inbound.readLine(),结果打印出来的都是乱码,而且奇怪的是这些乱码显示出来都是中文字符....

比如
我希望得到的是
neumáticos del carro
实际得到的是
neum脙隆ticos del carro

注:linux下运行,linux的LANG=en_US.UTF-8
UTF-8字符集里应该可以识别á的吧.. 呃..我看了下服务器端的输出也是utf-8的...

把输入端的输出流的字符集也修改成”UTF-8“,做到输出流与输入流字符集匹配。
或者你干脆别设字符集,都保持默认。
参考技术A á不识别

如何在 Odoo 11 中通过 do_action() java-script 方法显示 action_id

【中文标题】如何在 Odoo 11 中通过 do_action() java-script 方法显示 action_id【英文标题】:How to show action_id by do_action() java-script method in Odoo 11 【发布时间】:2019-01-10 13:09:40 【问题描述】:

当我从 java 脚本代码调用 do_action 方法时,我没有得到操作 ID。因此,当我刷新或重新加载页面时,我的表单是空白的。我正在使用 Odoo 11。

action_timesheet_user: function(event) 
    var self = this;
    event.stopPropagation();
    event.preventDefault();
    alert(self.employee_data.timesheet_action);
    if (self.employee_data.uid == 1)
        this.do_action(
        name: _t("Timesheets"),
        type: 'ir.actions.act_window',
        res_model: 'account.analytic.line',
        view_mode: 'tree,form',
        view_type: 'form',
        views: [[false, 'list'],[false, 'form']],
        context: 
                //'search_default_employee_id': [self.employee_data.id],
                'search_default_month': true,
                ,
        target: 'current'
        )
    else 
        this.do_action(
        name: _t("Timesheets"),
        type: 'ir.actions.act_window',
        res_model: 'account.analytic.line',
        view_mode: 'tree,form',
        view_type: 'form',
        views: [[false, 'list'],[false, 'form']],
        context: 
                //'search_default_employee_id': [self.employee_data.uid],
                'search_default_month': true,
                ,
        domain: ['|','|',['user_id', '=', self.employee_data.uid],
        ['employee_id.department_id.manager_id.user_id', '=', self.employee_data.uid],
        ['project_id.user_id','in',[self.employee_data.uid]]],
        target: 'current'
        ,on_reverse_breadcrumb: function() return self.reload();)
    ,

events: _.extend(, Widget.prototype.events, 'click .custom_helpdesk_tickets': 'action_custom_helpdesk_tickets'),

Xml 模板:

<div><a class="btn btn-primary btn-block custom_helpdesk_tickets" role="button"><strong>Helpdesk</strong></a></div>

在模板按钮上调用此函数后,我得到:

        http://localhost:8069/web?#view_type=list&model=account.analytic.line

要求:

        http://localhost:8069/web?debug#view_type=list&model=account.analytic.line&menu_id=458&action=487

提前致谢。

【问题讨论】:

【参考方案1】:

如果上面的代码不起作用,那么您将尝试下面的第二种方法是您将使用此代码的示例代码

XML 代码:

<record id="hr_timesheets_attendance_action_kanban" model="ir.actions.act_window">
    <field name="name">Timesheets</field>
    <field name="res_model">account.analytic.line</field>
    <field name="view_mode">tree,form</field>
    <field name="help" type="html">
        <p>
            To create employees timesheet.
        </p>
    </field>
</record>

JS 代码

this.do_action('module_name.hr_timesheets_attendance_action_kanban');

谢谢

【讨论】:

【参考方案2】:

do_action方法你不能创建一个新的动作,你执行任何创建的动作。因此,您必须提供必须执行的操作的 ID。

【讨论】:

我在哪个参数中给出id?例如(res_id 或其他)。意味着我想要语法,我有操作 id =643。 如果您有操作 ID,即数据库记录 ID,那么您需要该数据库 ID 的注册表 ID(名称)。就像如果操作 id = 643,那么注册表 id 应该类似于:my_action_test。语法应该类似于:do_action('module_name.action_name) 在我们的例子中我们可以说:do_action('module_name.my_action_test)

以上是关于JAVA中通过socket得到的字符串是乱码的主要内容,如果未能解决你的问题,请参考以下文章

Socket: Java Client 与 C Server 传输数据中文乱码问题

java socket 接收服务端的信息出现乱码,该怎么解决

如何让php中通过字段和记录查询得到的mysql返回数据保持原有的数据类型

socket接收汉字问题

Socket: Java Client 与 C Server 传输数据中文乱码问题

如何生成uuid oracle