明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 862|回复: 11

[函数] URL编码转换URLencode

  [复制链接]
发表于 2025-12-25 17:16:57 | 显示全部楼层 |阅读模式
本帖最后由 tryhi 于 2025-12-26 10:18 编辑



  1. ;;;函数名称:try-URLencode
  2. ;;;函数说明:url编码
  3. ;;;示    例try-URLencode "http://127.0.0.1/save/1/post上传文件.lsp")
  4. (defun try-URLencode (str / _urlbianma lst utf-8lst)
  5.   (defun _urlbianma(n / 10-16 m n16x x)
  6.     (if (< n 128)
  7.       (chr n);单字节
  8.       (progn
  9.         (setq x "" 10-16 '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F"))
  10.         (while (/= 0 n)
  11.           (setq
  12.             m(rem n 16)
  13.             n(/ n 16)
  14.             n16x(nth m 10-16)
  15.             x(strcat n16x x)
  16.           )
  17.         )
  18.         (if (= x "")(setq x"0"))
  19.         (if (= (strlen x)1) (setq x(strcat "0"x)))
  20.         (strcat "%" x)
  21.       )
  22.       
  23.     )
  24.   )
  25.   (setq utf-8lst(try-str2UTF-8  str))
  26.   (setq lst (mapcar '_urlbianma utf-8lst))
  27.   (apply 'strcat lst)
  28. )
  29. (defun try-str2UTF-8 (str / file_list fileget stream)
  30.   (if (setq stream (vlax-create-object "Adodb.Stream"))
  31.     (progn
  32.       (vlax-put-property stream 'Type 2) ; 1二进制读取 2文本模式读取
  33.       (vlax-put-property stream 'Mode 3) ; 1-读,2-写,3-读写
  34.       (vlax-put-property stream 'Charset "utf-8") ; 设置编码为UTF-8
  35.       (vlax-invoke stream 'Open)
  36.       (vlax-invoke stream 'WriteText str)
  37.       (vlax-put-property stream 'Position 0) ; 将位置重置为起始位置
  38.       (vlax-put-property stream 'Type 1) ; 1二进制读取 2文本模式读取
  39.       (setq FileGet(Vlax-Invoke-Method stream 'Read nil))
  40.       (setq File_list (vlax-safearray->list (vlax-variant-value FileGet)))
  41.       (vlax-release-object stream)
  42.       (cdddr File_list);去除BOM
  43.     )
  44.     (princ"\n无法创建'Adodb.Stream'对象")
  45.   )
  46. )

  47. (try-URLencode "http://127.0.0.1/save/1/post上传文件.lsp")
  48. ;--> "http://127.0.0.1/save/1/post%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6.lsp"


帮一个网友写的URL编码转换,用来带汉字对服务器进行传参
示例:(try-URLencode "http://127.0.0.1/save/1/post上传文件.lsp")
;--> "http://127.0.0.1/save/1/post%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6.lsp"

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 3明经币 +3 收起 理由
baitang36 + 1 很给力!
Bao_lai + 1 很给力!
tigcat + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 2025-12-25 17:19:49 | 显示全部楼层
本帖最后由 dcl1214 于 2025-12-25 17:22 编辑

  1. (defun $URLencode$
  2.        (str / $URLencode-sc$ $URLencode-vbs$ STRS $URLencode3$)
  3.   (defun $URLencode3$
  4.    (str / $jz10->jz16$ $str->utf-8$ 16jzs str-new utf-8s)
  5.     (defun $str->UTF-8$  (str / file_list fileget stream)
  6.       (if (and (setq stream (vl-catch-all-apply
  7.             'vlax-create-object
  8.             (list "Adodb.Stream")
  9.           )
  10.          )
  11.          (not (vl-catch-all-error-p stream))
  12.     )
  13.   (progn
  14.     (vlax-put-property stream 'Type 2)
  15.           ; 1二进制读取 2文本模式读取
  16.     (vlax-put-property stream 'Mode 3) ; 1-读,2-写,3-读写
  17.     (vlax-put-property stream 'Charset "utf-8") ; 设置编码为UTF-8
  18.     (vlax-invoke stream 'Open)
  19.     (vlax-invoke stream 'WriteText str)
  20.     (vlax-put-property stream 'Position 0) ; 将位置重置为起始位置
  21.     (vlax-put-property stream 'Type 1)
  22.           ; 1二进制读取 2文本模式读取
  23.     (and (setq FileGet (Vlax-Invoke-Method stream 'Read nil))
  24.          (setq FileGet (vl-catch-all-apply
  25.              'vlax-variant-value
  26.              (list FileGet)
  27.            )
  28.          )
  29.          (setq File_list (vlax-safearray->list FileGet))
  30.          (setq File_list (cdddr File_list)) ;去除BOM
  31.     )
  32.     (vl-catch-all-apply 'vlax-release-object (list stream))
  33.   )
  34.   (print "$URLencode3$无法创建'Adodb.Stream'对象")
  35.       )
  36.       File_list
  37.     )
  38.     (defun $jz10->jz16$  (int)
  39.       (cond ((< int 10)
  40.        (itoa int)
  41.       )
  42.       ((<= 10 int 15)
  43.        (chr (+ int 55))
  44.       )
  45.       (t
  46.        (strcat
  47.          ($jz10->jz16$ (/ int 16))
  48.          ($jz10->jz16$ (rem int 16))
  49.        )
  50.       )
  51.       )
  52.     )
  53.     (setq utf-8s ($str->UTF-8$ str))
  54.     (setq 16jzs  (mapcar  (function (lambda (a) ($jz10->jz16$ a)))
  55.       utf-8s
  56.     )
  57.     )
  58.     (setq
  59.       str-new
  60.        (apply 'strcat
  61.         (mapcar (function (lambda (x) (strcat "%" x))) 16jzs)
  62.        )
  63.     )
  64.     (if  str-new
  65.       (setq str str-new)
  66.     )
  67.     str
  68.   )
  69.   (defun $URLencode-sc$  (str / SC url)
  70.           ;($URLencode$ "213j 213 2 3 %20")
  71.           ;这个方法写出来了,还没应用到具体场景,应该是没问题,20201112
  72.     (if  (or
  73.     (and (setq SC
  74.           (vl-catch-all-apply
  75.       'vlax-get-or-create-object
  76.       (list
  77.         "MSScriptControl.ScriptControl"
  78.       )
  79.           )
  80.          )
  81.          (not (vl-catch-all-error-p SC))
  82.     )
  83.     (and (setq SC
  84.           (vl-catch-all-apply
  85.       'vlax-get-or-create-object
  86.       (list
  87.         "Aec32BitAppServer.AecScriptControl.1"
  88.       )
  89.           )
  90.          )
  91.          (not (vl-catch-all-error-p SC))
  92.     )
  93.     (and (setq SC
  94.           (vl-catch-all-apply
  95.       'vlax-get-or-create-object
  96.       (list
  97.         "ScriptControl"
  98.       )
  99.           )
  100.          )
  101.          (not (vl-catch-all-error-p SC))
  102.     )
  103.     (and (setq SC
  104.           (vl-catch-all-apply
  105.       'vlax-get-or-create-object
  106.       (list
  107.         "{e8540e26-d20e-483f-9fd5-a5a3553a7556}"
  108.       )
  109.           )
  110.          )
  111.          (not (vl-catch-all-error-p SC))
  112.     )
  113.     (and (setq SC
  114.           (vl-catch-all-apply
  115.       'vlax-get-or-create-object
  116.       (list
  117.         "{0e59f1d5-1fbe-11d0-8ff2-00a0d10038bc}"
  118.       )
  119.           )
  120.          )
  121.          (not (vl-catch-all-error-p SC))
  122.     )
  123.   )
  124.       (progn
  125.   (vl-catch-all-apply
  126.     'vlax-put
  127.     (list SC 'Language "JScript")
  128.   )
  129.   (setq url (vl-catch-all-apply
  130.         'vlax-invoke
  131.         (list SC 'run "encodeURI" str)
  132.       )
  133.   )
  134.       )
  135.     )
  136.     (if  sc
  137.       (vlax-release-object sc)
  138.     )
  139.     (IF  (vl-catch-all-error-p url)  ;如果出错
  140.       (setq url nil)
  141.     )
  142.     (if  url
  143.       url
  144.       str
  145.     )
  146.   )
  147.   (defun $URLencode-vbs$
  148.        (str / code *SCR DATA new)
  149.           ;($URLencode$  "http://192.168.0.107:8848/download?filename=中国.png")  
  150.     (if  STR
  151.       (if (or
  152.       *SCR
  153.       (setq
  154.         *SCR (vlax-create-object
  155.          "Aec32BitAppServer.AecScriptControl.1"
  156.        )
  157.       )
  158.       (setq *SCR (vlax-create-object "ScriptControl"))
  159.     )
  160.   (progn
  161.     (vlax-put *SCR 'language "VBScript")
  162.     (setq  code
  163.      "Function UTF8Encode(szString)
  164.         Dim szChar,szTemp,szCode
  165.         Dim szHex,szBin
  166.         Dim iCount1,iCount2
  167.         Dim iStrLen1,iStrLen2
  168.         Dim lResult
  169.         Dim lAscVal
  170.         exclude=\"-_.!~*'();/?&=+$,#\"
  171.         szString = Trim(szString)
  172.         iStrLen1 = Len(szString)
  173.         For iCount1 = 1 To iStrLen1
  174.             szChar = Mid(szString, iCount1, 1)
  175.             lAscVal = AscW(szChar)
  176.             If lAscVal >= &H0 And lAscVal <= &HFF Then
  177.                 If (lAscVal >= &H30 And lAscVal <= &H39) Or (lAscVal >= &H41 And lAscVal <= &H5A) Or (lAscVal >= &H61 And lAscVal <= &H7A) Or InStr(exclude,szChar) >0 Then
  178.                     szCode = szCode & szChar
  179.                 Else
  180.                     szCode = szCode & \"%\" & Hex(AscW(szChar))
  181.                 End If
  182.             Else
  183.                 szHex = Hex(AscW(szChar))
  184.                 iStrLen2 = Len(szHex)
  185.                 For iCount2 = 1 To iStrLen2
  186.                     szChar = Mid(szHex, iCount2, 1)
  187.                     szBin = szBin & Mid(\"0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1101;1110;1111;\", CLng(\"&H\" & szChar) * 5 + 1, 4)
  188.                 Next
  189.                 szTemp = \"1110\" & Left(szBin, 4) & \"10\" & Mid(szBin, 5, 6) & \"10\" & Right(szBin, 6)
  190.                 For iCount2 = 1 To 24
  191.                     If Mid(szTemp, iCount2, 1) = \"1\" Then
  192.                         lResult = lResult + 1 * 2 ^ (24 - iCount2)
  193.                     Else
  194.                         lResult = lResult + 0 * 2 ^ (24 - iCount2)
  195.                     End If
  196.                 Next
  197.                 szTemp = Hex(lResult)
  198.                 szCode = szCode & \"%\" & Left(szTemp, 2) & \"%\" & Mid(szTemp, 3, 2) & \"%\" & Right(szTemp, 2)
  199.             End If
  200.             szBin = vbNullString
  201.             lResult = 0
  202.         Next
  203.         UTF8Encode = szCode
  204.     End Function"
  205.     )
  206.     (if (and
  207.     (not (vl-catch-all-error-p
  208.            (vl-catch-all-apply
  209.        'vlax-invoke
  210.        (list *SCR
  211.              'addcode
  212.              code
  213.        )
  214.            )
  215.          )
  216.     )
  217.     (not (vl-catch-all-error-p
  218.            (setq new (vl-catch-all-apply
  219.            'vlax-invoke
  220.            (list *SCR
  221.            'run
  222.            "UTF8Encode"
  223.            str
  224.            )
  225.          )
  226.            )
  227.          )
  228.     )
  229.         )
  230.       ()
  231.       (setq new nil)
  232.     )
  233.     (if *SCR
  234.       (vlax-release-object *SCR)
  235.     )
  236.   )
  237.   (progn (print "调用VBScript转码失败,组件未找到"))
  238.       )
  239.     )
  240.     new
  241.   )
  242.   (if (and STR
  243.      (setq strs (vl-string->list str))
  244.      (vl-some (function (lambda (a)
  245.         (> a 128)
  246.             )
  247.         )
  248.         strs
  249.      )
  250.       )
  251.     (or  (setq url ($URLencode3$ str))
  252.   (setq url ($URLencode-sc$ str))
  253.   (setq url ($URLencode-vbs$ str))
  254.   (setq url str)      ;如果上面两个都转码失败了,直接返回原始字串
  255.     )
  256.     (setq url str)
  257.   )
  258.   url
  259. )


收集的

评分

参与人数 1明经币 +1 收起 理由
tryhi + 1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-12-26 15:19:02 | 显示全部楼层
jun353835273 发表于 2025-12-26 11:04
"%u+4f60%u+597d%u+4e16%u+754c"
_$ B
"%u+4f60%u+597d%u+4e16%u+754c"

  1. ;; 使用MyMemory API的完整代码
  2. (defun getxml (url / xml http)
  3.   (if (setq http (vlax-create-object "WinHTTP.WinHTTPRequest.5.1"))
  4.     (progn
  5.       (vlax-invoke-method http "open" "GET" url :vlax-false)
  6.       (vlax-invoke-method http "send")
  7.       (vlax-invoke-method http "WaitForResponse" 5)
  8.       (setq xml (vlax-get-property http "ResponseText"))
  9.       (vlax-release-object http)
  10.       xml
  11.     )
  12.   )
  13. )
  14. (defun fy (word / url result start end str translated)
  15.   ;; 构建请求URL
  16.   (setq url (strcat
  17.     "https://api.mymemory.translated.net/get"
  18.     "?q=" (vl-string-translate " " "%20" word)
  19.     "&langpair=en|zh"
  20.     "&de=" "your-email@example.com"  ;; 可选,提高免费额度
  21.   ))
  22.   
  23.   ;; 获取结果
  24.   (setq result (getxml url))
  25.   
  26.   (if (and result (> (strlen result) 10))
  27.     (progn
  28.       ;; 查找翻译结果
  29.       (setq start (vl-string-search "\"translatedText\":\"" result))
  30.       (if start
  31.         (progn
  32.           (setq str (substr result (+ start 19)))
  33.           (setq end1 (vl-string-search "\"" str))
  34.           (if end1
  35.             (progn
  36.               (setq translated (substr str 1 end1))
  37.               
  38.               ;; 解码URL编码
  39.               (setq translated (vl-string-translate "%20" " " translated))
  40.               (setq translated (vl-string-translate "%25" "%" translated))
  41.               (setq translated (vl-string-translate "%0A" "\n" translated))
  42.               (setq translated (vl-string-translate "%0D" "\r" translated))
  43.               
  44.               ;; 解码JSON转义
  45.               (setq translated (vl-string-translate "\\\"" "\"" translated))
  46.               (setq translated (vl-string-translate "\\\\" "\\" translated))
  47.               (setq translated (vl-string-translate "\\/" "/" translated))
  48.               (setq translated (vl-string-translate "\\b" "\b" translated))
  49.               (setq translated (vl-string-translate "\\f" "\f" translated))
  50.               (setq translated (vl-string-translate "\\n" "\n" translated))
  51.               (setq translated (vl-string-translate "\\r" "\r" translated))
  52.               (setq translated (vl-string-translate "\\t" "\t" translated))
  53.               
  54.               ;; 清理空白字符
  55.               (setq translated (vl-string-trim " \t\n\r" translated))
  56.               
  57.               ;; 如果结果包含 %% 且不是正常的百分号,可能是解析问题
  58.               (if (and (vl-string-search "%%" translated)
  59.                        (not (vl-string-search "%" word)))  ;; 原文本没有%
  60.                 (progn
  61.                   ;; 尝试修复可能的解析错误
  62.                   (setq translated (vl-string-subst "%" "%%" translated))
  63.                 )
  64.               )
  65.               
  66.               translated
  67.             )
  68.             word  ;; 没有找到结束引号
  69.           )
  70.         )
  71.         word  ;; 没有找到翻译文本
  72.       )
  73.     )
  74.     word  ;; 结果无效
  75.   )
  76. )


  77. ;; 主命令函数
  78. (defun c:TTR (/ ss n e dt txt oldtxt newtxt)
  79.   (setvar "cmdecho" 0)
  80.   (princ "\n选择要翻译的文本对象: ")
  81.   
  82.   (if (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  83.     (progn
  84.       (setq n 0)
  85.       (repeat (sslength ss)
  86.         (setq e (ssname ss n)
  87.               n (1+ n)
  88.               dt (entget e)
  89.               oldtxt (cdr (assoc 1 dt))
  90.         )
  91.         
  92.         (princ (strcat "\n翻译: \"" oldtxt "\""))
  93.         
  94.         ;; 调用翻译函数
  95.         (setq newtxt (fy oldtxt))
  96.         
  97.         (if (and newtxt (not (equal newtxt oldtxt)))
  98.           (progn
  99.             (entmod (subst (cons 1 newtxt) (assoc 1 dt) dt))
  100.             (princ (strcat " -> \"" newtxt "\""))
  101.           )
  102.           (princ " [翻译失败或未改变]")
  103.         )
  104.       )
  105.     )
  106.   )
  107.   (princ)
  108. )
  109. (defun T-string-subst (old new str / n)
  110.   (setq n (- (strlen new)))
  111.     (while (setq n (vl-string-search old str (min (+ n (strlen new)) (strlen str))))
  112.       (setq str (vl-string-subst new old str n))
  113.     )
  114.   str
  115. )

  116. (defun Unicode (translated / a b)

  117. ;(setq translated "\"u4f60\"u597d\"u4e16\"u754c")
  118. (setq a (T-string-subst "\"u" "\\U+" translated))
  119. (setq b(read (strcat "\""a"\"")))
  120.         (vl-princ-to-string b)
  121. )

  122. ;; 测试命令
  123. (defun c:TEST ()
  124.   (princ (Unicode(fy "hello-world")))
  125.   (princ)
  126. )

  127. (Unicode(fy "the sea"))
回复 支持 反对

使用道具 举报

发表于 2025-12-25 21:15:09 | 显示全部楼层
本帖最后由 jun353835273 于 2025-12-25 22:09 编辑

  1. ;; 使用MyMemory API的完整代码
  2. (defun getxml (url / xml http)
  3.   (if (setq http (vlax-create-object "WinHTTP.WinHTTPRequest.5.1"))
  4.     (progn
  5.       (vlax-invoke-method http "open" "GET" url :vlax-false)
  6.       (vlax-invoke-method http "send")
  7.       (vlax-invoke-method http "WaitForResponse" 5)
  8.       (setq xml (vlax-get-property http "ResponseText"))
  9.       (vlax-release-object http)
  10.       xml
  11.     )
  12.   )
  13. )
  14. (defun fy (word / url result start end str translated)
  15.   ;; 构建请求URL
  16.   (setq url (strcat
  17.     "https://api.mymemory.translated.net/get"
  18.     "?q=" (vl-string-translate " " "%20" word)
  19.     "&langpair=zh|en"
  20.     "&de=" "your-email@example.com"  ;; 可选,提高免费额度
  21.   ))
  22.   
  23.   ;; 获取结果
  24.   (setq result (getxml url))
  25.   
  26.   (if (and result (> (strlen result) 10))
  27.     (progn
  28.       ;; 查找翻译结果
  29.       (setq start (vl-string-search "\"translatedText\":\"" result))
  30.       (if start
  31.         (progn
  32.           (setq str (substr result (+ start 19)))
  33.           (setq end1 (vl-string-search "\"" str))
  34.           (if end1
  35.             (progn
  36.               (setq translated (substr str 1 end1))
  37.               
  38.               ;; 解码URL编码
  39.               (setq translated (vl-string-translate "%20" " " translated))
  40.               (setq translated (vl-string-translate "%25" "%" translated))
  41.               (setq translated (vl-string-translate "%0A" "\n" translated))
  42.               (setq translated (vl-string-translate "%0D" "\r" translated))
  43.               
  44.               ;; 解码JSON转义
  45.               (setq translated (vl-string-translate "\\\"" "\"" translated))
  46.               (setq translated (vl-string-translate "\\\\" "\\" translated))
  47.               (setq translated (vl-string-translate "\\/" "/" translated))
  48.               (setq translated (vl-string-translate "\\b" "\b" translated))
  49.               (setq translated (vl-string-translate "\\f" "\f" translated))
  50.               (setq translated (vl-string-translate "\\n" "\n" translated))
  51.               (setq translated (vl-string-translate "\\r" "\r" translated))
  52.               (setq translated (vl-string-translate "\\t" "\t" translated))
  53.               
  54.               ;; 清理空白字符
  55.               (setq translated (vl-string-trim " \t\n\r" translated))
  56.               
  57.               ;; 如果结果包含 %% 且不是正常的百分号,可能是解析问题
  58.               (if (and (vl-string-search "%%" translated)
  59.                        (not (vl-string-search "%" word)))  ;; 原文本没有%
  60.                 (progn
  61.                   ;; 尝试修复可能的解析错误
  62.                   (setq translated (vl-string-subst "%" "%%" translated))
  63.                 )
  64.               )
  65.               
  66.               translated
  67.             )
  68.             word  ;; 没有找到结束引号
  69.           )
  70.         )
  71.         word  ;; 没有找到翻译文本
  72.       )
  73.     )
  74.     word  ;; 结果无效
  75.   )
  76. )


  77. ;; 主命令函数
  78. (defun c:TTR (/ ss n e dt txt oldtxt newtxt)
  79.   (setvar "cmdecho" 0)
  80.   (princ "\n选择要翻译的文本对象: ")
  81.   
  82.   (if (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  83.     (progn
  84.       (setq n 0)
  85.       (repeat (sslength ss)
  86.         (setq e (ssname ss n)
  87.               n (1+ n)
  88.               dt (entget e)
  89.               oldtxt (cdr (assoc 1 dt))
  90.         )
  91.         
  92.         (princ (strcat "\n翻译: \"" oldtxt "\""))
  93.         
  94.         ;; 调用翻译函数
  95.         (setq newtxt (fy oldtxt))
  96.         
  97.         (if (and newtxt (not (equal newtxt oldtxt)))
  98.           (progn
  99.             (entmod (subst (cons 1 newtxt) (assoc 1 dt) dt))
  100.             (princ (strcat " -> \"" newtxt "\""))
  101.           )
  102.           (princ " [翻译失败或未改变]")
  103.         )
  104.       )
  105.     )
  106.   )
  107.   (princ)
  108. )

  109. ;; 测试命令
  110. (defun c:TEST ()
  111.   (princ (fy "你好世界"))
  112.   (princ)
  113. )

kozmosovia 发表于 2025-12-25 20:56
CAD内创建一个临时文本再获取内容,CAD会自动转码Unicode字符的。
这个免费翻译接口,不过英语翻译为汉语没有研究出来
长老牛逼,我ai搞半天没有解决的问题,你这几行代码解决了。
回复 支持 反对

使用道具 举报

发表于 2025-12-25 17:28:29 | 显示全部楼层
不需要那么长的代码,JavaScript搞定
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=193178

评分

参与人数 1明经币 +1 收起 理由
tryhi + 1 秒啊

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2025-12-25 17:33:31 | 显示全部楼层
很有办法 学会了
回复 支持 反对

使用道具 举报

发表于 2025-12-25 20:42:59 | 显示全部楼层
"\"u4f60\"u597d\"u554a"这个转汉字呢
回复 支持 反对

使用道具 举报

发表于 2025-12-25 20:56:28 | 显示全部楼层
jun353835273 发表于 2025-12-25 20:42
"\"u4f60\"u597d\"u554a"这个转汉字呢

CAD内创建一个临时文本再获取内容,CAD会自动转码Unicode字符的。
  1. (setq txt "123\U+4f60999\U+597dzzz\U+554a")
  2. (entmake (list (cons 0 "text") (cons 1 txt) (list 10 0 0 0) (cons 40 1)))
  3. (princ (cdr (assoc 1 (entget (entlast)))))
  4. (entdel (entlast))
回复 支持 反对

使用道具 举报

发表于 2025-12-25 23:34:28 | 显示全部楼层
(princ "123\U+4f60999\U+597dzzz\U+554a") 123你999好zzz啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-12-26 10:16:29 | 显示全部楼层
jun353835273 发表于 2025-12-25 20:42
"\"u4f60\"u597d\"u554a"这个转汉字呢

(defun T-string-subst (old new str / n)
  (setq n (- (strlen new)))
    (while (setq n (vl-string-search old str (min (+ n (strlen new)) (strlen str))))
      (setq str (vl-string-subst new old str n))
    )
  str
)
(setq translated "\"u4f60\"u597d\"u4e16\"u754c")
(setq a (T-string-subst "\"u" "\\U+" translated))
        b(read (strcat "\""a"\""))
)
;;->"你好世界"
回复 支持 反对

使用道具 举报

发表于 2025-12-26 11:04:01 | 显示全部楼层
tryhi 发表于 2025-12-26 10:16
(defun T-string-subst (old new str / n)
  (setq n (- (strlen new)))
    (while (setq n (vl-strin ...


"\U+4f60\U+597d\U+4e16\U+754c"
_$ B
"\U+4f60\U+597d\U+4e16\U+754c"
_$ 编辑器状态还是这个编码,还是得输出才行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2026-1-23 17:00 , Processed in 0.239227 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表