前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >乱码的烦恼

乱码的烦恼

作者头像
Setup
发布2023-09-01 08:55:39
3870
发布2023-09-01 08:55:39
举报

在临床编程中,经常会有乱码的烦恼。今天小编来分享一下,如何解决乱码问题。

表格的烦恼

近期有朋友问小编,proc report pretext posttext 输出标题脚注乱码,怎么解决。原来他编程的环境是utf8,标题脚注是中文的话出出来就会乱码,如下图所示:

代码语言:javascript
复制
title "Test 测试";
ods rtf file="d:\test.rtf" ;
  proc report data=sashelp.class style(report)={pretext="test测试" just=left};
  run;
ods rtf close;

小编提供了以下三种解决方法:

方法一

采用compute before_page_ compute after_page_生成表格内的空行,before _page_作为标题,before _page_作为脚注,再通过proc tempalte修改三线表的格式。

代码语言:javascript
复制
title "Test 测试";
ods rtf file="d:\test.rtf";
  proc report data=sashelp.class;
    compute before _page_;
      line "标题" ;
    endcomp;

    compute after _page_;
      line "脚注" ;
    endcomp;
  run;
ods rtf close;

方法二

通过ods rtf text='文本',生成一行文本信息。

代码语言:javascript
复制
title "Test 测试";
ods rtf file="d:\test.rtf";
ods rtf text="^S={just =center}标题";

  proc report data=sashelp.class;
  run;

ods rtf text="^S={just =center}脚注";
ods rtf close;

方法三

通过unicodec或put函数结合hex.实现编码的转换,put函数结合hex.之前已经分享过,接下来主要讲unicodec的运用;unicodec是将当前SAS会话编码中的字符转换为unicode字符的函数。

代码语言:javascript
复制
%macro char2uni(text);
  %global var;
  data _null_;
    length char unicode $200 var $30000;
    retain var;
      do i = 1 to klength("&text.");
        char=ksubstr("&text.",i,1);
          unicode= cats("\uc0\u", compress(unicodec(char,"ncr"),,"kd"), "\uc1\u32");
          var=cats(var,unicode);
        end;
    var=tranwrd(cats(var, "\uc1"), "\uc1\u32", " ");
    call symput("var", strip(var));
  run;
%mend char2uni;
%char2uni(标题);

title "Test 测试";
ods rtf file="d:\test.rtf";
proc report data =sashelp.class style(report)={pretext="&var." just=left};
run;
ods rtf close

那就又有人问小编了,有些研究脚注需要用到上标下标怎么办?小编这边整理了常用的RTF控制符:

代码语言:javascript
复制
\outlinelevelN  定义标题级别文本
\tab  制表符
\~  空格
\par  换行
\pard  清除格式
\super  上标
\sub  下标
\nosupersub  取消上下标
\b \b0  粗体(取消粗体)
\i \i0   斜体(取消斜体)
\ul \ul0   下划线(取消下划线)
\ql \qr \qc  居左、居右、居中对齐
\highlightN  高亮
\hightlight0  取消高亮

图形的烦恼

在服务器写好的图,到了客户那里面的字变成方块了。这又怎么办呢?

其实只要加一个简单的option就可以解决啦

ods graphics /outputfmt=png;

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAS程序分享号号号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档