wgij007 发表于 2021-6-4 09:02:13

多行文本出现内容变成特字符,有办法变回原内容吗。

本帖最后由 wgij007 于 2021-8-13 07:46 编辑

原内容: Q235冷板 T2.0


变成:Q235\U+51B7\U+677F T2.0   

在图内看的还是原内容,只有在特性里才有区别. 谢谢。
双击编辑,不用改任何东东,按确定退出也可以恢复。

功能:能框选,内容变回实际内容,内容不单单是上面那些,只是举例。


谢谢


xinxirong 发表于 2021-6-4 12:22:24

没必要改,既不影响看图也不影响修改。
要改的话还要写程序批量转换。

masterlong 发表于 2021-6-4 16:20:27

双击编辑还是文字吧?全选复制到记事本,再复制粘贴回去

mikewolf2k 发表于 2021-6-4 17:09:37

这是ACAD的代码页跟WINDOWS的不一致而已,UTF-8什么的,建议不要改。在一致的机器上显示是正确的。
这个问题,在近20年前常见,还有专门工具转换。近年来基本看不到了。是不是WIN10?

wgij007 发表于 2021-6-4 18:45:40

主要是替代文本时有问题,有些变了,有些又没变。

xtjd 发表于 2021-7-5 11:09:56

(defun c:fmt(/ d dn e i s)
(setvar "cmdecho" 0)
(princ "\Fmt 〓 清除多行文字格式")
(setq i -1)
(if(setq s(ssget '((0 . "mtext"))))
    (repeat (sslength s)
      (setq d(entget(setq e(ssname s(setq i (1+ i))))))
      (setq dn(subst(cons 1(LM:UnFormat(cdr(assoc 1 d))nil))(assoc 1 d)d))
      (entmod dn)
    )
)
(prin1)
)
(defun LM:UnFormat (str mtx / _replace rx)
(defun _replace (new old str)
    (vlax-put-property rx 'pattern old)
    (vlax-invoke rx 'replace str new)
)
(if (setq rx (vlax-get-or-create-object "VBScript.RegExp"));引入正则表达式
    (progn
      (setq str
      (vl-catch-all-apply
          (function
            (lambda ()
            (vlax-put-property rx 'global   actrue)
            (vlax-put-property rx 'multilineactrue)
            (vlax-put-property rx 'ignorecase acfalse)
            (foreach pair
                '(
                   ("\032"    . "\\\\\\\\")
                   (" "       . "\\\\P|\\n|\\t")
                   ("$1"      . "\\\\(\\\\)|\\\\[^\\\\;]*;|\\\\")
                   ("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);")
                   ("$1$2"    . "\\\\(\\\\S)|[\\\\](})|}")
                   ("$1"      . "[\\\\]({)|{")
               )
                (setq str (_replace (car pair) (cdr pair) str))
            )
            (if mtx
                (_replace "\\\\" "\032" (_replace "\\$1$2$3" "(\\\\)|({)|(})" str))
                (_replace "\\"   "\032" str)
            )
            )
          )
      )
      )
      (vlax-release-object rx)
      (if (null (vl-catch-all-error-p str))
      str
      )
    )
)
)

wgij007 发表于 2021-7-21 17:35:38

本帖最后由 wgij007 于 2021-7-21 17:38 编辑

xtjd 发表于 2021-7-5 11:09
(defun c:fmt(/ d dn e i s)
(setvar "cmdecho" 0)
(princ "\Fmt 〓 清除多行文字格式")

这个不是多行文字格式。 这是文本来的,图里看得是正常文本。编辑才看到\U+51B7 是冷字。\U+677F 是板字

xiang19751218 发表于 2021-7-22 11:47:11

(vl-string-translate "\\" "\\\\" "Q235\U+51B7\U+677F T2.0")->"Q235冷板 T2.0"

wgij007 发表于 2021-7-24 08:12:19

不是针对这个,是所有这种情况的文本改回,双击编辑按确定也可以的,我要的是批量处理。

wgij007 发表于 2021-8-12 18:00:36

顶一下。
页: [1] 2
查看完整版本: 多行文本出现内容变成特字符,有办法变回原内容吗。